Spec-Zone.ru › MySQL 9.2

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

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

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

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

  • Управление типами операций изменения данных, для которых буферы InnoDB кешируют измененные данные, чтобы избежать частых небольших записей на диск. См. Настройка буферизации изменений. Включение буферизации изменений может повысить производительность при работе с нагрузкой, ограниченной ввода-вывода, но может привести к проблемам при восстановлении, массовом импорте или при изменении размера буфера пула. Отключение (по умолчанию с MySQL 8.4) помогает обеспечить стабильность, даже если это может снизить производительность.

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

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

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

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

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

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

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

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

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

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

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

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

  • Уменьшение количества переключений, которые выполняет 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-8.4-en/optimizing-innodb-configuration-variables.html

Spec-Zone.ru

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