Важна ли настройка innodb_buffer_pool_size в Solaris ZFS? - PullRequest
0 голосов
/ 29 марта 2011

Мы работаем с базой данных среднего размера (350 ГБ) с довольно большими таблицами (несколько сотен миллионов строк, 50 ГБ) на достаточно большом сервере (2 x четырехъядерных Xeon, 24 ГБ ОЗУ, 2,5 "10 КБ дисков в RAID10 ) и получают довольно медленные вставки (например, простая вставка одной строки занимает 90 секунд!).

Наш параметр innodb_buffer_pool_size имеет значение 400 МБ, что обычно слишком мало для такого рода настройки. Однако наш хостинг-провайдер сообщает, что это не имеет значения при работе на ZFS. Он прав?

(Извиняюсь за двойной пост на https://dba.stackexchange.com/questions/1975/is-tuning-the-innodb-buffer-pool-size-important-on-solaris-zfs,, но я не уверен, насколько большая аудитория там!)

Ответы [ 2 ]

1 голос
/ 29 марта 2011

Я бы все равно установил innodb_buffer_pool_size намного выше, чем 400M. Причина? InnoDB Buffer Pool по-прежнему будет кэшировать данные и страницы индекса, необходимые для часто используемых таблиц.

Запустите этот запрос, чтобы получить рекомендованный размер innodb_buffer_pool_size в МБ:

ВЫБРАТЬ КОНКАТ (КРУГЛЫЙ (KBS / POWER (1024, IF (pw <0,0, IF (pw> 3,0, pw))) + 0,49999), SUBSTR ('KMG', IF (pw <0, 0, IF (pw> 3,0, pw)) + 1,1)) рекомендованный_innodb_buffer_pool_size FROM (ВЫБРАТЬ СУММУ (data_length + index_length) KBS FROM information_schema.tables WHERE engine = 'InnoDB') A, (ВЫБРАТЬ 2 pw) B;

Просто используйте результат этого запроса или 80% установленной оперативной памяти (в вашем случае 19660M), в зависимости от того, что меньше.

Я бы также установил для innodb_log_file_size значение 25% от размера пула буферов InnoDB. К сожалению, максимальное значение innodb_log_file_size составляет 2047M. (1M меньше 2G) Таким образом, установите innodb_log_file_size в 2047M, так как 25% от innodb_buffer_pool_size моего рекомендованного параметра составляет 4915M.

Еще одна рекомендация - отключить соответствие ACID . Используйте 0 или 2 для innodb_flush_log_at_trx_commit (по умолчанию 1, что поддерживает соответствие ACID). Это приведет к более быстрой записи InnoDB НА РИСК потери транзакций стоимостью до 1 секунды в случае сбоя.

0 голосов
/ 29 марта 2011

Может быть стоит прочитать slow-mysql-insertts , если вы этого еще не сделали.Также эта ссылка на документы MySQL по этому вопросу - особенно в том, что касается рассмотрения транзакции, если вы делаете несколько вставок в большую таблицу.

Более уместна эта статья MySQLо производительности innodb и zfs , которые специально учитывают размер пула буферов.

Вывод заголовка таков:

С InnoDB кривая производительности ZFS предлагает новую стратегию "установите низкий размер пула буферов и позвольте ZFS обрабатывать буферизацию данных. "

Вы можете добавить некоторые подробности, такие как количество / сложность индексов в таблице - это, очевидно, может сделатьбольшая разница.

Извиняюсь за то, что это скорее общий совет, чем из личного опыта, я не запускал zfs в гневе, но надеюсь, что некоторые из этих ссылок могут быть полезны.

...