10.5.4 Оптимизация журналирования InnoDB
Рассмотрите следующие рекомендации по оптимизации журналирования:
-
Увеличьте размер файлов журнала. Когда
InnoDBзаписал файлы журнала redo, он должен записать изменённое содержимое буфера пула в диск. Маленькие файлы журнала redo вызывают много ненужных операций записи на диск.Размер файла журнала redo определяется параметром
innodb_redo_log_capacity.InnoDBпытается поддерживать 32 файла журнала redo одинакового размера, где каждый файл равен 1/32 *innodb_redo_log_capacity. Поэтому изменение значенияinnodb_redo_log_capacityизменяет размер файлов журнала redo.Дополнительную информацию о модификации конфигурации файлов журнала redo см. в Раздел 17.6.5, «Журнал redo».
Рассмотрите увеличение размера буфера журнала. Большой буфер журнала позволяет большим операциям выполняться без необходимости записи журнала на диск до завершения транзакций. Таким образом, если у вас есть транзакции, которые обновляют, вставляют или удаляют много строк, увеличение размера буфера журнала экономит ввод-вывод на диск. Размер буфера журнала настраивается с помощью параметра конфигурации
innodb_log_buffer_size, который можно настроить динамически.-
Настройте параметр конфигурации
innodb_log_write_ahead_size, чтобы избежать “чтения при записи”. Этот параметр определяет размер блока предварительной записи для журнала redo. Установите значениеinnodb_log_write_ahead_sizeв соответствии с размером блока кэша операционной системы или файловой системы. Чтение при записи происходит, когда блоки журнала redo не полностью кэшируются операционной системой или файловой системой из-за несоответствия между размером блока предварительной записи для журнала redo и размером блока кэша операционной системы или файловой системы.Допустимые значения для
innodb_log_write_ahead_size— кратные размеру блока файла журналаInnoDB(2n). Минимальное значение — размер блока файла журналаInnoDB(512). При указании минимального значения предварительная запись не выполняется. Максимальное значение равно значениюinnodb_page_size. Если вы зададите значение дляinnodb_log_write_ahead_size, которое больше значенияinnodb_page_size, значениеinnodb_log_write_ahead_sizeусекается до значенияinnodb_page_size.Установка значения
innodb_log_write_ahead_sizeслишком низкого относительно размера блока кэша операционной системы или файловой системы приводит к чтению при записи. Установка значения слишком высокой может незначительно повлиять на производительностьfsyncпри записи файлов журнала из-за записи нескольких блоков одновременно. MySQL предоставляет отдельные потоки записи журнала для записи записей журнала redo из буфера журнала в системные буферы и сброса системных буферов в файлы журнала redo. Вы можете включить или отключить потоки записи журнала с помощью переменной
innodb_log_writer_threads. Отдельные потоки записи журнала могут улучшить производительность на системах с высокой конкурентностью, но для систем с низкой конкурентностью отключение отдельных потоков записи журнала повышает производительность.-
Оптимизируйте использование задержки вращения потоков пользователя, ожидая сброса redo. Задержка вращения помогает уменьшить задержку. В периоды низкой конкурентности уменьшение задержки может быть менее важным, и избегание использования задержки вращения в эти периоды может снизить энергопотребление. В периоды высокой конкурентности вы можете захотеть избежать затрат вычислительных ресурсов на задержку вращения, чтобы они могли использоваться для других задач. Следующие системные переменные позволяют установить высокие и низкие значения порогов, которые определяют границы использования задержки вращения.
innodb_log_wait_for_flush_spin_hwm: Определяет максимальное среднее время сброса журнала, после которого потоки пользователей перестают вращаться при ожидании сброса redo. Значение по умолчанию — 400 микросекунд.innodb_log_spin_cpu_abs_lwm: Определяет минимальное использование процессора, ниже которого потоки пользователей перестают вращаться при ожидании сброса redo. Значение выражается как сумма использования ядер процессора. Например, значение по умолчанию 80 — 80% одного ядра процессора. В системе с многоядерным процессором значение 150 представляет 100% использования одного ядра процессора плюс 50% использования второго ядра процессора.-
innodb_log_spin_cpu_pct_hwm: Определяет максимальное использование процессора, выше которого потоки пользователей перестают вращаться при ожидании сброса redo. Значение выражается в процентах от суммарной вычислительной мощности всех ядер процессора. Значение по умолчанию — 50%. Например, 100% использования двух ядер процессора составляют 50% от суммарной вычислительной мощности процессора на сервере с четырьмя ядрами.Параметр конфигурации
innodb_log_spin_cpu_pct_hwmучитывает сродство процессора. Например, если у сервера 48 ядер, но процесс mysqld привязан только к четырём ядрам процессора, остальные 44 ядра игнорируются.
© 2025 Oracle
Licensed under the GPLv2 License.