14.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 оператора, который требует привилегий, достаточных для установки глобальных системных переменных. См. Раздел 5.1.8.1, «Привилегии на системные переменные».
Случайная предварительная выборка — это техника, которая предсказывает, когда страницы могут понадобиться вскоре, исходя из страниц, уже находящихся в буфере пула, независимо от порядка, в котором эти страницы были прочитаны. Если в буфере пула найдено 13 последовательных страниц из одного и того же расширения, InnoDB асинхронно отправляет запрос на предварительную выборку оставшихся страниц расширения. Для включения этой функции установите переменную конфигурации innodb_random_read_ahead в ON.
Команда SHOW ENGINE INNODB STATUS отображает статистику, которая поможет вам оценить эффективность алгоритма предварительной выборки. Статистика включает в себя информацию о счётчиках для следующих глобальных переменных состояния:
Эта информация может быть полезна при настройке параметра innodb_random_read_ahead.
Дополнительную информацию о производительности ввода-вывода см. в разделе 8.5.8, «Оптимизация ввода-вывода InnoDB на диск» и разделе 8.12.2, «Оптимизация ввода-вывода на диск».
© 2025 Oracle
Licensed under the GPLv2 License.