• Как правильно оптимизировать файл лога 1С 8.2?

    Добрый вечер. Наиболее частая причина разрастания лог файла - это неправильно выбранная модель восстановления и/или некорректно настроенное резервное копирование БД и журнала транзакций.

    Вероятнее всего у вас выбрана полная(full) модель восстановления - она выбирается по умолчанию для пользовательских баз и обеспечивает хранение наибольшего количества операций в журнале транзакций. При этом автоматического урезания журнала в этом режиме не происходит.

    Посмотреть какая выбрана модель восстановления можно например с помощью "MS SQL Management Studio" в свойствах базы на закладке "Параметры"
    6099570d94db4a248017d8a558fd42f3.PNG
    Для данной модели восстановления урезание журнала транзакций напрямую зависит от резервного копирования и если его не делать файл будет только расти.

    Решить проблему можно несколькими способами:
    1. Перевод в простой (Simple) режим и последующее сжатие (Shrink Database) БД и журнала транзакций. При этом крайне рекомендуется предварительно сделать buckup средствами SQL.
    2. Настроить автоматическое резервное копирование БД и журнала транзакций, а так же автоматическое сжатие (Auto Shrink)


    Подробнее можно почитать здесь:
    Ответ написан
    2 комментария
  • Как получить несколько значений из присоединенной таблицы?

    @dk-web
    $query="SELECT a.*, GROUP_CONCAT(DISTINCT b.subject_id) AS subject
    FROM `USERS` AS a
    LEFT OUTER JOIN `USERS_SUBJECTS` AS b ON a.id = b.user_id
    WHERE a.id ='$id' GROUP BY a.id";

    Мог ошибиться - свой запрос "прилаживал". У меня была недавно аналогичная задача.... Он конкатенирует в строку значения из таблицы users_subjects - потом explodом можно получить массив...
    Ответ написан
    Комментировать
  • Как получить несколько значений из присоединенной таблицы?

    @murrometz
    Поищите join concat mysql
    Ответ написан
    Комментировать
  • Где может быть ошибка в sql запросе?

    @Beltoev
    Живу в своё удовольствие
    Вас in_stock = , реально не смущает?
    Ответ написан
    Комментировать
  • Как сделать запрос в таблицу указанную как аргумент в хранимой процедуре?

    murad1986
    @murad1986 Автор вопроса
    MySQL, Startups, internet-marketing
    Часто возникает необходимость передавать имя таблицы или колонки в виде параметра процедуры. Однако напрямую это сделать нельзя. Если в качестве имени таблицы, столбца и т.п. использовать переменную (неважно локальную или входной параметр), то сервер при выполнении запроса использует имя переменной, а не её значение.
    Для иллюстрации напишем простейшую процедуру, которая считает количество уникальных значений определенного столбца.

    DROP PROCEDURE IF EXISTS my_proc;
    delimiter//
    CREATE PROCEDURE my_proc(table_name CHAR(64), column_name char(64))
    BEGIN
    SELECT count(DISTINCT column_name) FROM table_name;
    END;
    //

    Все примеры будут выполняться на примере учебной базы world, которую Вы можете скачать с сайта MySQL (dev.mysql.com/doc/)
    Пусть мы хотим узнать количество округов. Выполнение нашей процедуры:
    CALL my_proc('City', 'District')//
    Приведет к попытке посчитать уникальные значения столбца column_name из таблицы table_name, которой скорее всего не существует, что приведет к ошибке. Те данные которые мы передали в качестве параметров использованы не будут.

    Преодолеть данное затруднение можно за счет использования пользовательских переменных и подготовленных выражений.

    Пользовательские переменные (user variable).
    Пользовательские переменные записываются как @var_name, действуют в течении сессии, не чувствительны к регистру.
    Могут быть определены следующими способами:
    1) В выражениях SET с помощью операторов ' =' или ' := '
    test >set @v1 = 'one', @v2 := 'two';
    Query OK, 0 rows affected (0.00 sec)

    test >select @v1, @v2;
    +------+------+
    | @v1 | @v2 |
    +------+------+
    | one | two |
    +------+------+
    1 row in set (0.00 sec)
    2) В выражениях select с помощью оператора ' := '
    test >select @v1 := 55;
    +-----------+
    | @v1 := 55 |
    +-----------+
    | 55 |
    +-----------+
    3) С помощью выражений select .. from .. into (эквивалентно select .. into .. from)
    test >select col_int into @av from aa limit 1;
    Query OK, 1 row affected (0.00 sec)

    test >select @aV;
    +------+
    | @aV |
    +------+
    | 1990 |
    +------+
    1 row in set (0.00 sec)

    Если переменная не была определена явно, то принимает NULL значение.
    test >select @x;
    +------+
    | @x |
    +------+
    | NULL |
    +------+

    Пользовательской переменной может быть присвоен результат выполнения функции. Например:
    world >SET var = CONCAT('SELECT count(DISTINCT ', 'District', ') FROM ', 'City');
    Query OK, 0 rows affected (0.00 sec)

    world >SELECT var;
    +-------------------------------------------+
    | var |
    +-------------------------------------------+
    | SELECT count(DISTINCT District) FROM City |
    +-------------------------------------------+
    1 row in set (0.00 sec)

    Подготовленные выражения (prepared statement)
    Подготовленные выражения (prepared statement) отличаются от обычных запросов тем, что не выполняются по завершению парсинга выражения, а хранятся на сервере. Выполняются в момент их вызова командой "EXECUTE имя_выражения" (возможен многократный вызов). Обычно применяются, когда необходимо выполнить ряд одинаковых (или незначительно отличающихся) запросов. Например, многократно выполняем запрос указывая различную временную величину. Вследствии того, что хранятся на сервере - уменьшают трафик и время на парсинг (выражение разбирается один раз).
    Существуют только в течении сессии. Если создается новая с уже существующим именем, старая автоматически удаляется (даже если новая содержит ошибку и не будет создана).

    Имеет следующий синтаксис:
    PREPARE имя_выражения_какое_хотите FROM какой_нибудь_запрос;
    EXECUTE имя_выражения_какое_хотите;

    Запрос можно вписать сразу, например:
    world >PREPARE zxc FROM 'SELECT count(DISTINCT District) FROM City';
    Query OK, 0 rows affected (0.00 sec)
    Statement prepared

    world >EXECUTE zxc;
    +--------------------------+
    | count(DISTINCT District) |
    +--------------------------+
    | 1367 |
    +--------------------------+
    1 row in set (0.03 sec)

    Или сначала сделать переменную и потом приготовить выражение из нее:
    world >SET @query = 'SELECT count(DISTINCT District) FROM City';
    Query OK, 0 rows affected (0.00 sec)

    world >PREPARE zxc FROM @query;
    Query OK, 0 rows affected (0.38 sec)
    Statement prepared

    world >EXECUTE zxc;
    +--------------------------+
    | count(DISTINCT District) |
    +--------------------------+
    | 1367 |
    +--------------------------+
    1 row in set (0.38 sec)
    Это очень хорошее свойство, так как позволяет программисту формировать запрос динамически.

    Кроме того, можно выполнять запросы с различными параметрами.
    PREPARE имя_выражения FROM 'SELECT count(*) FROM table_name WHERE column1= ?';
    SET var = '54';
    EXECUTE имя_выражения USING var;
    Вернет количество строк в таблице table_name, у которых column1=54.

    Применительно к нашему случаю решение будет выглядеть след. образом:

    DROP PROCEDURE IF EXISTS my_proc//
    CREATE PROCEDURE my_proc(table_name CHAR(64), column_name CHAR(64))
    BEGIN
    SET var = CONCAT('SELECT count(DISTINCT ', column_name, ') FROM ', table_name);
    PREPARE zxc FROM var;
    EXECUTE zxc;
    END;
    //

    world >call my_proc('City', 'District')//
    +--------------------------+
    | count(DISTINCT District) |
    +--------------------------+
    | 1367 |
    +--------------------------+
    1 row in set (0.00 sec)
    Ответ написан
    Комментировать
  • Как оставлять скрипт работать после закрытия консоли?

    saboteur_kiev
    @saboteur_kiev Куратор тега SSH
    software engineer
    используйте nohup <ваша команда>

    собственно при разрыве коннекта, процессу отправляется сигнал hup (исторически от типа поднял трубку, модем оборвался).
    программа nohup блокирует этот сигнал, и в случае разрыва коннекта перенаправляет весь вывод, который должен был идти на экран (stdout) в файлик nohup.out (по умолчанию в том же каталоге где скрипт запускали)
    Ответ написан
    Комментировать
  • Как оставлять скрипт работать после закрытия консоли?

    merryjane
    @merryjane
    Системный администратор
    nohup php script.php &

    Почитайте также про
    screen
    tmux
    disown
    Ответ написан
    4 комментария
  • Как сделать группировку результатов по дням в SQL-запросе?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Запрос примерно такой будет, если я верно понял.
    SELECT t.field1, t.field2 FROM table AS t
    WHERE condition
    GROUP BY DAYOFMONTH(t.date), HOUR(t.date), MONTH(t.date)
    Ответ написан
    1 комментарий
  • Как вручную добавить базу данных?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    innodb таблицы хранятся в ibdata файле, а не в каталоге базы. Поэтому innodb вам удастся восстановить только полностью

    Лучше все таки mysqldump
    Ответ написан
    Комментировать
  • Какое расстояние для витой пары приемлемое?

    martin74ua
    @martin74ua Куратор тега Компьютерные сети
    Linux administrator
    либо оптика, либо поищите кабель П-296. На нем до 200 метров можно получить

    Но лучше оптика - геммороя меньше
    Ответ написан
    3 комментария
  • Как получить прямой доступ к письмам на сервере?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    если письма приходят на этот сервер - посмотрите в каталог /var/mail
    Ответ написан
    1 комментарий
  • Как выбрать время из диапазона ячеек в Mysql?

    jumper423
    @jumper423
    web-developer
    SELECT ... WHERE
    (time_from < `time_to` AND NOW() > time_from AND NOW < `time_to`) OR
    (time_from > `time_to` AND NOW() > time_from OR NOW < `time_to`)
    Ответ написан
    4 комментария
  • Как увеличить пропускную способность локального соединения?

    athacker
    @athacker
    Агрегация каналов вам поможет только если эти 896 МБит/с генерятся множеством клиентов. Потому как распределение по линкам делается на основе source hash'a (ну, это не единственный способ, но забьём пока на подробности). Так как у вас фактически канал точка-точка, то агрегация не сработает. Нужно мутить 10 гигабит.

    Либо, если есть возможность разделить трафик (ну, например, у вас 500 МБит/с в обмене -- это NFS-трафик, а остальные 396 Мбит/с -- это SMB-трафик), то тогда можно поставить второй адаптер, выдать на этот адаптер IP-адрес ИЗ ДРУГОЙ ПОДСЕТИ (это важно), и настроить аналогично второй адаптер на втором сервере. Ну и сделать привязку соответствующих сервисов только к соответствующему IP-адресу, и, как следствие -- к отдельному адаптеру.
    Ответ написан
    Комментировать
  • Как сделать сайт автоматизированным?

    S-ed
    @S-ed
    Комбайнёр
    Ответ написан
    Комментировать
  • Получу ли я 1920х1080?

    @ohgarry
    да
    Ответ написан
    Комментировать
  • Неверный расчет PHP. Как такое возможно?

    GavriKos
    @GavriKos
    if($totalItems >= 1000) пробовали менять на if($totalItems >= 1000.0) ?

    Или даже лучше разницу флоатов проверить, и с погрешностью сравнить.
    Ответ написан
    5 комментариев
  • Народ, м. б. у кого возникала такая ситуация: На работе у одного компа постоянно в обед пропадает инет?

    Jump
    @Jump
    Системный администратор со стажем.
    Сисадмин в обед кушает, и тарелку на сетевой кабель ставит, кабель пережимается, и все - соединение не рвется, а пакеты не пролазят в пережатый участок.
    Попробуйте не давать еду системному администратору в обед.
    Ответ написан
    1 комментарий
  • Можно ли подписаться на рассылку уязвимостей CVE?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    https://cve.mitre.org/cve/data_updates.html
    На выбор: ежедневные changelog-и или RSS
    Ответ написан
    Комментировать
  • Как хранить IP в базе?

    @vilgeforce
    Раздолбай и программист
    У меня хранятся как числа, преобразование через функции INET_NTOA()/INET_ATON().
    Ответ написан
    5 комментариев