Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 Включение параметра innodb_file_per_table и замедление работы mysql.exe  [new]
A-MaR
Member

Откуда: Екатеринбург
Сообщений: 107
Терминал с MariaDB 5.5 / Windows XP / 512 М памяти. По умолчанию innodb_file_per_table был отключен. Включал, как описано здесь: http://michael-xiii.blogspot.ru/2011/10/mysql-innodbfilepertable.html , за исключением одного момента: т.к. у меня база одна, выполнил полную переустановку MariaDB с нуля. После развертывания базы данных заметил один неприятный эффект: все операции, выполняемые через утилиту командной строки mysql.exe (а это весь импорт данных из внешних источников) стали как минимум раза в 2 медленнее. В то же время на основном функционале программы изменение параметра существенно не отразилось. Для чистоты эксперимента установил на другой терминал MariaDB 10.1, в котором innodb_file_per_table по умолчанию был включен (и в свое время я отказался от этой версии как раз по причине медленной работы mysql.exe). Отключил этот параметр - так и есть, mysql.exe в 10.1 стал работать так же быстро, как и в 5.5 с отключенным innodb_file_per_table.
Собственно вопрос: почему изменение innodb_file_per_table негативно влияет именно на утилиту командной строки, и есть ли способы обойти эту проблему?
Строка, отправляемая mysql.exe: mysql -uroot -hlocalhost -p***** -P 3306 -DMyDatabase <"C:\Script.sql" . В скрипте никаких особых изысков не используется. Все таблицы в базе innodb.
2 янв 17, 16:17    [20069246]     Ответить | Цитировать Сообщить модератору
 Re: Включение параметра innodb_file_per_table и замедление работы mysql.exe  [new]
miksoft
Member

Откуда:
Сообщений: 37029
A-MaR,

Сколько таблиц всего?

Вы уверены, что влияет именно innodb_file_per_table, а не innodb_flush_log_at_trx_commit, который могли после переустановки забыть в дефолтном значении (а именно дефолтное значение дает сильное замедление)?
2 янв 17, 19:31    [20069471]     Ответить | Цитировать Сообщить модератору
 Re: Включение параметра innodb_file_per_table и замедление работы mysql.exe  [new]
A-MaR
Member

Откуда: Екатеринбург
Сообщений: 107
Таблиц 129, innodb_flush_log_at_trx_commit = 2. В том, что замедляет именно innodb_file_per_table, сомнений почти нет: специально сравнивал конфиги с двух соседних одинаковых терминалов, работающих с идентичными по объему базами. Отличались только этими параметрами. После того, как на втором терминале вернул дефолтное значение innodb_file_per_table = 0, быстродействие mysql.exe восстановилось.
2 янв 17, 22:30    [20069733]     Ответить | Цитировать Сообщить модератору
 Re: Включение параметра innodb_file_per_table и замедление работы mysql.exe  [new]
miksoft
Member

Откуда:
Сообщений: 37029
A-MaR
После того, как на втором терминале вернул дефолтное значение innodb_file_per_table = 0, быстродействие mysql.exe восстановилось.
Прям сразу, без пересоздания таблиц?
3 янв 17, 00:56    [20070002]     Ответить | Цитировать Сообщить модератору
 Re: Включение параметра innodb_file_per_table и замедление работы mysql.exe  [new]
A-MaR
Member

Откуда: Екатеринбург
Сообщений: 107
miksoft,
Нет, точно также выполнил переустановку сервера.
3 янв 17, 05:58    [20070120]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Включение параметра innodb_file_per_table и замедление работы mysql.exe  [new]
A-MaR
Member

Откуда: Екатеринбург
Сообщений: 107
В общем, спустя год таки нашел источник тормозов. При импорте данные заливаются вначале в промежуточные таблицы, а уже из них в рабочие. И чтобы не париться с очисткой промежуточных таблиц, я недолго думая делал им Truncate. А поскольку используется несколько промежуточных таблиц и данные закачиваются небольшими партиями, таких Truncate-ов на цикл обмена получалось штук от 10 и больше. Логично, что при innodb_file_per_table=on происходило множественное пересоздание файлов, что и вызывало тормоза.
В общем, после замены Truncate на delete from варианты с innodb_file_per_table=on и innodb_file_per_table=off полностью сравнялись по скорости, и даже там где было off стало быстрее раза в полтора.
16 янв 18, 21:58    [21112237]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить