Грамотно подходим к выбору значения innodb_thread_concurrency в MySQL

Настраиваю MySQL-сервер на продакшене с высокой нагрузкой. Дошел до выбора значения innodb_thread_concurrency (8 by default, очевидно что на мощном железе выгодно его увеличить).

Вопрос прост: в документации читаем, что

A recommended < innodb_thread_concurrency > value is 2 times the number of CPUs plus the number of disks.


У меня на сервере 2 четырёхядерных Xeon со включённым гипертрейдингом. Что считать CPU в данном контексте — непосредственно процессоры (сомнительно), ядра (cores), которых у меня получается 8, или потоки (threads), которых у меня 16 (склоняюсь к этой версии)?

С number of disks, кстати, тоже неясно — если в системе 2 диска, на одном ОС, а на втором — /var/db/mysql, следует ли считать в данном контексте, что диск 1? А если всё крутится на RAID 0+1 на, скажем, 8 физических дисках?
  • Вопрос задан
  • 11103 просмотра
Решения вопроса 1
innodb_thread_concurrency — это максимальное количество потоков.
На таких процессорах я встречал, что это значение стоит и 50 и 100.

Если у вас большая нагрузка на процессор, то можно сделать побольше. Но если все упирается в винчестер, что очень вероятно, то тут лучше не переусердствовать. В общем, попробуйте понаблюдать за загрузкой винчестера и процессора и, если они не загружены, пробуйте потихоньку увеличивать innodb_thread_concurrency.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы