Ниже приведены минимально необходимые параметры конфигурации MySQL сервера, улучшающие его производительность:
1. innodb_buffer_pool_size — Количество памяти выделяемое серверу для таблиц InnoDB
Оптимально ~80% RAM памяти, если сервер используется только для MySQL. Пример для сервера с 32Гб ОЗУ
[code]
innodb_buffer_pool_size=24G
[/code]
2. innodb_flush_log_at_trx_commit = 2 — Запись логов происходит раз в секунду, вместо каждого коммита. Улучшает производительность при медленной дисковой подсистемы.
[code]
innodb_flush_log_at_trx_commit = 2
[/code]
3. innodb_log_file_size — Увеличение лога уменьшает нагрузку на диск, улучшая I/O.
[code]
innodb_log_file_size = 512M
[/code]
Изменение параметра вступает в силу только после рестарта MySQL. Старые лог файлы /var/lib/mysql/ib_logfile* необходимо удалить/переместить, так как они будут созданы заново.
4. innodb_log_buffer_size — позволяет производить более крупные операции, без записи лога на диск, увеличивая производительность дисковой подсистемы. По умолчанию = 1MB.
[code]
innodb_log_buffer_size = 8M
[/code]
5. innodb_file_per_table — Не влияющий на производительность, однако очень полезный параметр, который трудно будет поменять после записи даннных.
В пежиме file-per-table каждая новая таблица будет иметь отдельный файл данных, что позволяет освобождать место на диске при удалении данных в таблице, а также имеет другие преимущества.
Итог:
[code]
innodb_buffer_pool_size=24G
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 512M
innodb_log_buffer_size = 8M
innodb_file_per_table
[/code]