Вопрос

Мы работаем в базе данных умеренного размера (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 записи на риск потерять до 1 секунды сделок в случае сбоя. .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top