Skip to content

[MySQL] Тонкя настройка MySQL

fantomrp edited this page Nov 23, 2012 · 4 revisions

Статьи:

Настройки /etc/my.cnf (из статьи на харе)

[mysqld]
; 30-40% от доступной оперативной памяти, если используете только MyISAM, если нет MyISAM то около 16-32 МБ
key_buffer_size         = 64M

; 70-80% доступной оперативной памяти (если, конечно, используются только InnoDB-таблицы)
innodb_buffer_pool_size = 1024M

; не влияет на производительность, но надо оставлять для InnoDB около 20 МБ иби чуть больше
innodb_additional_mem_pool_size = 40M

; крайне важная настройка, значение около 64-512 МБ в зависимости от размера сервера
innodb_log_file_size = 128M

; стандартное значение данной опции вполне подойдёт, Рекомендуемое значение - около 8-16 МБ
innodb_log_buffer_size = 32M

; Значение 1 - (по умолчанию) каждая UPDATE-транзакция должна сбрасывать буфер на диск, что достаточно ресурсоёмко.
; значение 2 - не сбрасывать буфер на диск, только в кэш ОС
; Значение 0 - повысит производительность, но Вы рискуете потерять данные даже при аварийной остановке mySQL-сервера
innodb_flush_log_at_trx_commit = 2

; Если у Вас несколько сотен таблиц, то стартовым значением для опции table_cache может быть '1024' (помните, что каждое соединение требует свой собственный дескриптор). 
table_cache            = 1024

; 16-500 -  подробее тут http://habrahabr.ru/post/159085/ для большой нагрузки лучше побольшое
thread_cache_size = 64


; опция важна если имеется много и часто одинаковых запросов на чтение. Рекомендуемое значение - от 32 до 512 МБ.
query_cache_size        = 64
query_cache_limit       = 1024M

; Для больших запросов
max_allowed_packet      = 16M

После изменения опций innodb_buffer_pool_size и innodb_log_file_size mysql может не стартануть, поэтому надо сделать:

service mysql stop
rm -f /var/lib/mysql/ib_logfile*
service mysql start

Рестарт сервера

/etc/init.d/mysqld restart
service mysql restart

Найти шаблоны конфигураций

find . -name 'my*.cnf'
Clone this wiki locally