Spec-Zone.ru › MySQL 9.2

17.8.3.4 Настройка предварительной выборки InnoDB буфера пула (чтение вперёд)

Запрос — это запрос ввода-вывода для предварительной выборки нескольких страниц в буфере пуле асинхронно, в предвидении предстоящей потребности в этих страницах. Запросы загружают все страницы в один . InnoDB использует два алгоритма предварительной выборки, чтобы улучшить производительность ввода-вывода:

Линейная предварительная выборка — это техника, которая предсказывает, какие страницы могут потребоваться в ближайшее время, исходя из страниц в буфере пуле, к которым последовательно обращаются. Вы контролируете, когда InnoDB выполняет операцию предварительной выборки, изменяя количество последовательных обращений к страницам, необходимое для запуска асинхронного запроса на чтение, используя параметр конфигурации innodb_read_ahead_threshold. До добавления этого параметра InnoDB вычислял только целесообразность отправки асинхронного запроса на предварительную выборку всего следующего экстента при чтении последней страницы текущего экстента.

Параметр конфигурации innodb_read_ahead_threshold регулирует чувствительность InnoDB при обнаружении закономерностей последовательного доступа к страницам. Если количество последовательно прочитанных страниц из экстента больше или равно innodb_read_ahead_threshold, InnoDB инициирует асинхронную операцию предварительной выборки всего последующего экстента. innodb_read_ahead_threshold может принимать значения от 0 до 64. Значение по умолчанию — 56. Чем выше значение, тем строже проверка шаблона доступа. Например, если вы установите значение 48, InnoDB запускает запрос на линейную предварительную выборку только тогда, когда последовательно обработано 48 страниц текущего экстента. Если значение равно 8, InnoDB запускает асинхронную предварительную выборку, даже если последовательно обработано всего 8 страниц экстента. Вы можете установить значение этого параметра в MySQL или изменить его динамически с помощью SET GLOBAL оператора, который требует привилегий, достаточных для установки глобальных системных переменных. См. Раздел 7.1.9.1, «Привилегии системных переменных».

Случайная предварительная выборка — это техника, которая предсказывает, когда страницы могут потребоваться в ближайшее время, исходя из страниц, уже находящихся в буфере пуле, независимо от порядка, в котором эти страницы были прочитаны. Если 13 последовательных страниц из одного экстента находятся в буфере пуле, InnoDB асинхронно отправляет запрос на предварительную выборку оставшихся страниц экстента. Чтобы включить эту функцию, установите конфигурационную переменную innodb_random_read_ahead в значение ON.

Оператор SHOW ENGINE INNODB STATUS отображает статистику, которая поможет оценить эффективность алгоритма предварительной выборки. Статистика включает счётчики следующих глобальных переменных состояния:

  • Innodb_buffer_pool_read_ahead

  • Innodb_buffer_pool_read_ahead_evicted

  • Innodb_buffer_pool_read_ahead_rnd

Эта информация может быть полезна при тонкой настройке параметра innodb_random_read_ahead.

Дополнительную информацию о производительности ввода-вывода см. в Разделе 10.5.8, «Оптимизация ввода-вывода InnoDB» и Разделе 10.12.1, «Оптимизация ввода-вывода дисков».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-performance-read_ahead.html

Spec-Zone.ru

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