Настраивает innodb_buffer_pool_size важно на Solaris ZFS?
Вопрос
Мы работаем в базе данных умеренного размера (350 ГБ) с некоторыми довольно большими таблицами (несколько сотен миллионов строк, 50 ГБ) на достаточно большой сервер (2 х четырехъядерные Xeons, 24 ГБ, 2,5 дюйма) 10K дисков в RAID10), и получите несколько красивых медленных вкладышей (например, простая вставка одной строки, взяв на себя 90 секунд!).
Наша innodb_buffer_pool_size установлена на 400 МБ, что обычно будет слишком низко для такого типа установки.Тем не менее, наш хостинг-провайдер советует, что это не имеет значения при работе на ZFS.Он прав?
(извинения за двойной пост на https://dba.stackexchange.com/Questions/1975/is-tuning-the-innodb-buffer-pool-size-iMplatent-on-solaris-zfs , но я не уверен, насколько большойАудитория там!)
Решение
Я все равно установил innodb_buffer_pool_size намного выше, что 400m. Причина? Буферный пул InnoDB все равно будет кэшировать страницы данных и индекса, которые вам нужны для таблиц, доступных часто.
Запустите этот запрос, чтобы получить рекомендуемую InnoDB_BUFFER_POOL_SIZE в MB:
Выберите Concat (Round (KBS / Power (1024, если (PW <0,0, если (PW> 3,0, PW))) + 0,49999), Substr ('kmg', если (pw <0, .
Просто используйте результат этого запроса или 80% установленной ОЗУ (в вашем случае 19660м), в зависимости от того, что меньше.
Я также установил бы innodb_log_file_size до 25% размера буферного пула InnoDB. К сожалению, максимальное значение innodb_log_file_size составляет 2047 м. (1 м Короткое из 2 г) Таким образом, установите innodb_log_file_size до 2047 м, так как 25% innodb_buffer_pool_size от моей рекомендации составляет 4915 м.
Еще одна рекомендация предназначена для Отключить соблюдение кислоты . Используйте 0 или 2 для innodb_flush_log_at_trx_commit (по умолчанию 1, которое поддерживает соблюдение кислоты) Это произведет более быстрый innoDB записи
Другие советы
может стоить чтение Медленные MySQL-вставки , если вы еще этого не сделали. Также Эта ссылка к документам MySQL по этому вопросу - особенно в отношении рассмотрения транзакции, если вы делаете несколько вставок на большую таблицу.
Более актуальным является Эта статья MySQL о производительности InnoDB и ZFS / a> Что конкретно рассматривает размер буферного пула.