Как вы настраиваете MySQL на тяжелую рабочую нагрузку InnoDB?

Предполагая создание OLTP-системы с преимущественно таблицами InnoDB

  • Каковы общие симптомы ошибочной /неправильно сконфигурированной системы?
  • Какие параметры конфигурации вы обычно меняете от своих значений по умолчанию?
  • Как вы обнаруживаете потенциальные узкие места, прежде чем возникнет проблема?
  • Как вы узнаете и устраните активные проблемы?

Любые анекдоты, в которых подробно описываются переменные и диагностика состояния status, будут оценены.

38 голосов | спросил Riedsio 4 Jpm1000000pmTue, 04 Jan 2011 21:17:50 +030011 2011, 21:17:50

5 ответов


16

Здесь - хорошая статья о настройке InnoDB от Sun's Jenny Chen - она ​​много пишет о MySQL, некоторые (например, DTrace ), но весь блог полон интересных лакомых кусочков.

ответил Gaius 15 Jpm1000000pmSat, 15 Jan 2011 20:23:53 +030011 2011, 20:23:53
19

Интересно, что в MySQL 5.5 теперь вы можете иметь несколько пулов буферов innodb.

Параметры, о которых вы заботитесь,

Примерно через месяц я планирую реализовать 112 пулов буферов innodb для клиента. Я дам вам знать, как все прошло.

ОБНОВЛЕНИЕ 2011-02-27 21:57 EDT

Я узнал, что максимальное значение для innodb_buffer_pool_instances равно 64 Я решил настроить 144 ГБ, поэтому я установил innodb_buffer_pool_instances на 18 и innodb_buffer_pool_size на 8. Я в настоящее время загружаю сервер с 450 ГБ

ОБНОВЛЕНИЕ 2011-04-28 13:44 EDT

Я попробовал несколько пулов буферов InnoDB. Было слишком много запирания резьбы и раздора. Я перешел на один 162GB Buffer Pool +, установив read_io_threads и write_io_threads на 64 (максимальное значение). Это улучшилось.

ОБНОВЛЕНИЕ 2012-07-03 17:27 EDT

Я узнал что-то удивительное в MySQL. Если вы выделите единый монолитный пул буферов InnoDB, который больше, чем Total Installed Divided By Number of Physical CPUs , ваш подстрекатель подтолкнет OS к регулярному интервалу замены памяти из-за полного Буферный пул InnoDB. Вариант MySQL 5.5, известный как innodb_buffer_pool_instances может использоваться для разделения пула буферов. Вчера я правильно выполнил это для клиента, о котором я упомянул в своем ответе в прошлом году. У меня все еще есть 162 ГБ для Buffer Pool клиента. Я установил параметр innodb_buffer_pool_instances сервера на 2, потому что каждый сервер БД является двойным гексакором. Я подумывал установить его до 12, но затем коллега показал мне блог Джереми Коула по MySQL и Swappiness . Прочитав его, я немедленно применил его для моего клиента. Я выполнил эту команду

numactl --hardware

Я видел сопоставление 192 ГБ серверной ОЗУ как 96 ГБ с каждым физическим ядром. Поэтому я установил innodb_buffer_pool_instances на 2. Вещи хорошо выглядят прямо сейчас. Я обновлю свой ответ, чтобы увидеть, как это влияет на обмен памяти на следующие 2 месяца.

ответил RolandoMySQLDBA 12 FebruaryEurope/MoscowbSat, 12 Feb 2011 06:51:29 +0300000000amSat, 12 Feb 2011 06:51:29 +030011 2011, 06:51:29
7

Вы можете изучить следующие ресурсы:

ответил Brian Ballsun-Stanton 10 Jam1000000amMon, 10 Jan 2011 03:29:40 +030011 2011, 03:29:40
4

Во-первых, увеличьте размер пула буферов InnoDB по умолчанию в my.cnf (по-моему, по умолчанию он равен 8 МБ)

Вероятно, вы должны установить это на 75% от вашего размера оперативной памяти (в общем)

ответил Matt Healy 11 Jam1000000amTue, 11 Jan 2011 08:00:05 +030011 2011, 08:00:05
-1
  

Какие параметры конфигурации вы используете   чаще всего меняются   по умолчанию?

Конфигурация памяти

ответил sbczk 5 Jpm1000000pmWed, 05 Jan 2011 17:09:59 +030011 2011, 17:09:59

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132