Spec-Zone.ru › MySQL 5.7

8.5.9 Оптимизация переменных конфигурации InnoDB

Разные настройки лучше всего подходят для серверов с легкими и предсказуемыми нагрузками по сравнению с серверами, которые постоянно работают на пределе своих возможностей или испытывают пики высокой активности.

Поскольку движок хранения InnoDB выполняет многие из своих оптимизаций автоматически, многие задачи по настройке производительности включают мониторинг, чтобы убедиться, что база данных работает хорошо, и изменение параметров конфигурации при снижении производительности. См. Раздел 14.17, «Интеграция InnoDB с MySQL Performance Schema» для получения информации о подробном мониторинге производительности InnoDB.

Основные шаги по настройке, которые можно выполнить, включают:

  • Включение InnoDB для использования высокопроизводительных менеджеров памяти на системах, которые их содержат. См. Раздел 14.8.4, «Настройка менеджера памяти для InnoDB».

  • Управление типами операций изменения данных, для которых InnoDB буферирует изменённые данные, чтобы избежать частых небольших записей на диск. См. Настройка буферизации изменений. Поскольку по умолчанию буферируются все типы операций изменения данных, изменяйте эту настройку только в том случае, если вам нужно уменьшить количество буферизации.

  • Включение и выключение функции адаптивного индексирования хэша с помощью параметра innodb_adaptive_hash_index. См. Раздел 14.5.3, «Адаптивный индекс хэша» для получения дополнительной информации. Вы можете изменить эту настройку во время периодов необычной активности, а затем восстановить её первоначальное значение.

  • Установка ограничения на количество одновременных потоков, которые обрабатывает InnoDB, если проблема заключается в контекстной смене. См. Раздел 14.8.5, «Настройка одновременности потоков для InnoDB».

  • Управление объемом предварительной выборки, который выполняет InnoDB с помощью своих операций предварительного чтения. Когда в системе есть неиспользуемые возможности ввода/вывода, больше предварительного чтения может улучшить производительность запросов. Слишком большое предварительное чтение может привести к периодическому снижению производительности в сильно загруженной системе. См. Раздел 14.8.3.4, «Настройка предварительной выборки кэша буфера InnoDB (предварительное чтение)».

  • Увеличение количества фоновых потоков для операций чтения или записи, если у вас высокопроизводительная подсистема ввода/вывода, которая не полностью используется значениями по умолчанию. См. Раздел 14.8.6, «Настройка количества фоновых потоков ввода/вывода InnoDB».

  • Управление тем, сколько ввода/вывода выполняет InnoDB в фоновом режиме. См. Раздел 14.8.8, «Настройка емкости ввода/вывода InnoDB». Вы можете уменьшить эту настройку, если наблюдаете периодические снижения производительности.

  • Управление алгоритмом, определяющим, когда InnoDB выполняет определенные типы фоновых записей. См. Раздел 14.8.3.5, «Настройка сброса кэша буфера». Алгоритм работает для некоторых типов рабочих нагрузок, но не для других, поэтому вы можете отключить эту настройку, если наблюдаете периодические снижения производительности.

  • Использование многоядерных процессоров и конфигурации кэш-памяти для минимизации задержек при контекстной смене. См. Раздел 14.8.9, «Настройка опроса блокировки вращения».

  • Предотвращение того, чтобы одноразовые операции, такие как сканирование таблиц, мешали часто используемым данным, хранящимся в кэше буфера InnoDB. См. Раздел 14.8.3.3, «Делаем кэш буфера устойчивым к сканированию».

  • Настройка файлов журнала до размера, который имеет смысл для надежности и восстановления после сбоя. Файлы журнала InnoDB часто сохранялись небольшого размера, чтобы избежать длительных периодов запуска после сбоя. Оптимизации, внедрённые в MySQL 5.5, ускоряют определённые этапы процесса восстановления после сбоя. В частности, сканирование и применение журнала переигрывания стали быстрее благодаря улучшенным алгоритмам управления памятью. Если вы сохраняли файлы журнала искусственно небольшого размера, чтобы избежать длительных периодов запуска, теперь вы можете рассмотреть возможность увеличения размера файлов журнала, чтобы уменьшить ввод/вывод, происходящий из-за повторного использования записей журнала переигрывания.

  • Настройка размера и количества экземпляров кэша буфера InnoDB, особенно важная для систем с кэшами буфера объёмом в несколько гигабайт. См. Раздел 14.8.3.2, «Настройка нескольких экземпляров кэша буфера».

  • Увеличение максимального количества одновременных транзакций, что значительно улучшает масштабируемость для самых загруженных баз данных. См. Раздел 14.6.7, «Журналы отмены».

  • Перемещение операций очистки (одна из форм сбора мусора) в фоновый поток. См. Раздел 14.8.10, «Настройка очистки». Для эффективной оценки результатов этой настройки, сначала настройте другие параметры, связанные с вводом/выводом и потоками.

  • Сокращение количества переключений, выполняемых InnoDB между одновременными потоками, чтобы операции SQL на загруженном сервере не выстраивались в очередь и не образовывали “пробку”. Установите значение параметра innodb_thread_concurrency, до примерно 32 для высокопроизводительной современной системы. Увеличьте значение параметра innodb_concurrency_tickets, обычно до 5000 или около того. Эта комбинация параметров устанавливает ограничение на количество потоков, которые обрабатывает InnoDB в любой момент времени, и позволяет каждому потоку выполнить значительную работу перед заменой, чтобы количество ожидающих потоков оставалось низким, и операции могли завершиться без чрезмерной контекстной смены.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/optimizing-innodb-configuration-variables.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API