Предполагая производственную систему OLTP с преимущественно таблицами InnoDB
- Каковы общие симптомы неправильно настроенной / неправильно настроенной системы?
- Какие параметры конфигурации вы чаще всего меняете по умолчанию?
- Как определить потенциальные узкие места, прежде чем возникнет проблема?
- Как распознать и устранить активные проблемы?
Любые анекдоты с подробным описанием конкретных status
переменных и диагностики будут оценены.
mysql
performance
innodb
Riedsio
источник
источник
Ответы:
Вот хорошая статья по настройке InnoDB от Sun Дженни Чен - она много пишет в блоге о MySQL, некоторые из них относятся к Solaris (например, с использованием DTrace ), но весь блог полон интересных лакомых кусочков.
источник
Интересно, что в MySQL 5.5 теперь можно иметь несколько буферных пулов innodb.
Параметры, которые вас интересуют:
Примерно через месяц я планирую внедрить 112 буферных пулов innodb для клиента. Я дам вам знать, как все прошло.
ОБНОВЛЕНИЕ 2011-02-27 21:57 ПО ВОСТОЧНОМУ ВРЕМЕНИ
Я обнаружил, что максимальное значение для innodb_buffer_pool_instances равно 64. Я решил настроить 144 ГБ, поэтому для innodb_buffer_pool_instances было установлено значение 18, а для innodb_buffer_pool_size установлено значение 8. В настоящее время я загружаю сервер с 450 ГБ.
ОБНОВЛЕНИЕ 2011-04-28 13:44 ПО ВОСТОЧНОМУ ВРЕМЕНИ
Я опробовал несколько буферных пулов InnoDB. Было слишком много потоков и блокировок. Я переключился на один буферный пул 162 ГБ + установил read_io_threads и write_io_threads в 64 (максимальное значение). Это сработало намного лучше.
ОБНОВЛЕНИЕ 2012-07-03 17:27 ПО ВОСТОЧНОМУ ВРЕМЕНИ
Я узнал кое-что удивительное о MySQL. Если вы выделите один монолитный буферный пул InnoDB, который больше, чем общий установленный, разделенный на количество физических процессоров , ваша система будет подстрекать ОС к регулярным интервалам подкачки памяти из-за полного пула буферов InnoDB. Опция MySQL 5.5, известная как innodb_buffer_pool_instances, может использоваться для разделения буферного пула. Вчера я правильно реализовал это для клиента, о котором упоминал в своем ответе в прошлом году. У меня еще есть 162 ГБ для пула клиента. Я установил для параметра сервера innodb_buffer_pool_instances значение 2, поскольку каждый сервер БД имеет двойной шестнадцатеричный формат. Я думал о том, чтобы установить его на 12, но потом коллега показал мне блог от Джереми Коула на MySQL и Swappiness, Прочитав его, я немедленно применил его на практике для своего клиента. Я запускал эту команду
Я видел отображение 192 ГБ ОЗУ сервера как 96 ГБ для каждого физического ядра. Поэтому я установил innodb_buffer_pool_instances равным 2. Сейчас все выглядит хорошо. Я обновлю свой ответ, чтобы увидеть, как это влияет на обмен памяти для следующих 2-х месяцев.
источник
Вы можете изучить следующие ресурсы:
источник
Во-первых, увеличьте размер пула буферов InnoDB по умолчанию в my.cnf (я считаю, что по умолчанию он равен 8 МБ)
Вы, вероятно, должны установить это на 75% от вашего объема оперативной памяти (в целом)
источник
конфигурация памяти
источник