27 февраля, 2012

Базовая настройка MySQL

MySQL весьма популярная СУБД, на удивление, приемлемые настройки «из коробки» мне ни разу не попадались. Приведу наиболее важные параметры, которые стоит поменять сразу после установки.

Начнём с кодировки и метода сравнения строк, потому как latin1 плохой вариант, latin1_swedish_ci просто не вариант для кириллицы. Кодировка без вариантов utf8. Метод сравнения - utf8_general_ci, хороший вариант для русского и английского языков, для других случаев, возможно, стоит использовать utf8_unicode_ci.

character_set_client = utf8
character_set_server = utf8
collation_server = utf8_general_ci

Многие разработчики не указывать «движок» при создании таблицы, следующая опция позволит сделать выбор за них, естественно в сторону InnoDB.

default_storage_engine = InnoDB

По умолчанию все InnoDB таблицы хранятся в одном файле - ibdata1. Файл этот увеличивается, при росте объёма данных, но никогда не уменьшается. При значительном объёме БД это создаёт определённые сложности, например с помощью Xtrabackup нельзя будет скопировать отдельную БД, на InnoDB-таблицы не будут распространяться файловые квоты (привет разработчикам ISPmanager, надеюсь они уже поправили эту багу). Следующая опция заставит MySQL хранить каждую таблицу в отдельном файле:

innodb_file_per_table = 1
При при хранении объёмных blob'ов или текстов, max_allowed_packet должен быть выставлен на клиенте и сервере в значение превосходящее максимальный объём записи.
max_allowed_packet = 16M

На опции ниже так же нужно обратить внимание, если скорость выполнения запросов вызывает нарекания.

innodb_flush_log_at_trx_commit = 2

innodb_open_files = 300

innodb_buffer_pool_size = 128MB

query_cache_size = 10M
query_cache_limit = 1M

Комментариев нет:

Отправить комментарий