Назад | Перейти на главную страницу

Конфигурация MySQL для drupal

Я запускаю MySQL 5.0.75 на Ubuntu на двухъядерном компьютере с 8 гигабайтами оперативной памяти. Я использую сайт базы данных Drupal 5 и Drupal 6.

Я уверен, что моя конфигурация MySQL не оптимальна, но мне интересно, есть ли какие-нибудь низко висящие плоды, с которыми я могу обратиться. Вот суть нынешней установки.

Новая текущая установка (оригинальная внизу). Это выделенная машина, кстати:

key_buffer                      = 2G
innodb_buffer_pool_size         = 6G
innodb_additional_mem_pool_size = 16M
max_allowed_packet              = 16M
sort_buffer_size                = 128M
myisam_sort_buffer_size         = 128M
read_buffer_size                = 128M
join_buffer_size                = 128M
read_rnd_buffer_size            = 512M

thread_stack                    = 192K
thread_cache_size               = 10
thread_concurrency              = 8
innodb_thread_concurrency       = 8

table_cache                     = 2048
query_cache_limit               = 2M
query_cache_size                = 128M

Старый:

key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 128K
thread_cache_size       = 8
query_cache_limit       = 1M
query_cache_size        = 16M
expire_logs_days        = 10
max_binlog_size         = 100M
skip-federated
default-storage-engine  = InnoDB
default-character-set   = utf8
default-collation       = utf8_general_ci

Похоже, что вы используете InnoDB в качестве основного типа ядра базы данных, но в вашей конфигурации нет параметров настройки конфигурации InnoDB, что означает, что вы используете значения по умолчанию. Эти настройки по умолчанию рассчитаны на машину 8 Мбайт!

Я рекомендую эти настройки за основу и работаю оттуда

innodb_file_per_table
set-variable = innodb_buffer_pool_size=2G
set-variable = innodb_log_files_in_group=4
set-variable = innodb_log_file_size=128M
set-variable = thread_cache_size=10
set-variable = table_cache=512
set-variable = query_cache_size=8M

Вы не сказали, использует ли сайт php тот же компьютер, что и ваш сервер db, поэтому вам нужно быть осторожным, чтобы MySQL не потреблял столько физической оперативной памяти, чтобы это заставляло машину переключаться.

Я также рекомендовал бы вам добавить эти настройки к медленным запросам и запросам с плохим планом запроса.

log_slow_queries
log-queries-not-using-indexes
set-variable = long_query_time=1

Вы используете InnoDB, поэтому ваш innodb_buffer_pool должен быть настолько большим, насколько вы можете его сделать (key_buffer эквивалент MyISAM). 6 ГБ должно быть нормальным значением на машине с 8 ГБ.

Если вы выполняете много сложных запросов, sort_buffer и tmp_table_size может также стоить увеличения.