Spec-Zone .ru
спецификации, руководства, описания, API
|
Оптимизатор запросов MySQL использует оцененную статистику о ключевых дистрибутивах,
чтобы выбрать индексирование для плана выполнения, основанного на относительной селективности
индексирования. Определенные операции заставляют InnoDB выбирать случайные страницы от каждого, индексируют на
таблице, чтобы оценить количество
элементов индексирования. (Этот метод известен как случайные погружения.) Эти
операции включают ANALYZE TABLE
оператор, SHOW TABLE STATUS
оператор, и доступ к таблице впервые после перезапуска.
Чтобы дать Вам контроль над качеством оценки статистики (и таким образом лучшая информация для оптимизатора
запросов), можно теперь изменить число выбранных страниц, используя параметр innodb_stats_sample_pages
. Ранее, число выбранных страниц всегда было 8,
который мог быть недостаточным, чтобы произвести точную оценку, приводя плохому индексирует варианты
оптимизатором запросов. Этот метод особенно важен для больших таблиц и таблиц, используемых в соединениях.
Ненужные полные сканирования
таблицы на предмет таких таблиц могут быть существенной проблемой производительности. См. Раздел 8.2.1.4, "Как Избежать Полных Сканирований
таблицы" на предмет подсказок относительно настройки таких запросов.
Можно установить глобальные параметры innodb_stats_sample_pages
, во времени выполнения. Значение по умолчанию для этого
параметра 8, сохраняя то же самое поведение как в прошлых выпусках.
Значение innodb_stats_sample_pages
влияет на индексировать выборку для всех таблиц InnoDB и
индексирует. Есть следующее потенциально существенное влияние, когда Вы изменяете индексировать объем
выборки:
Маленькие значения как 1 или 2 могут привести к очень неточным оценкам количества элементов.
Увеличение innodb_stats_sample_pages
значение могло бы потребовать большего
количества чтения с диска. Значения, намного больше чем 8 (говорят, 100), могут вызвать большое
замедление во время, которое требуется, чтобы открыть таблицу или выполниться SHOW
TABLE STATUS
.
Оптимизатор мог бы выбрать, совсем другие планы запроса, основанные на различных оценках, индексируют селективность.
Отключить оценку количества элементов для операторов метаданных такой как SHOW TABLE
STATUS
, выполните оператор SET GLOBAL innodb_stats_on_metadata=OFF
(или
0
). Возможность установить эту опцию динамически также относительно нова.
Все таблицы InnoDB открываются, и статистические данные повторно оцениваются для всех связанных, индексирует, когда mysql клиент запускает, если установка автоперефразировки устанавливается на (значение по умолчанию). Чтобы улучшить время запуска mysql клиента, можно выключить автоперефразировку. Опция автоперефразировки позволяет автоматическому завершению имени базы данных, таблицы, и имен столбцов для интерактивных пользователей.
Безотносительно значения innodb_stats_sample_pages
работы лучше всего для системы, набор опция и отпуск
это в том значении. Выберите значение, которое приводит к разумно точным оценкам для всех таблиц в Вашей базе
данных, не требуя чрезмерного ввода-вывода. Поскольку статистические данные автоматически повторно вычисляются
неоднократно кроме на выполнении ANALYZE
TABLE
, это не имеет смысла увеличивать индексировать объем выборки, работать ANALYZE TABLE
, тогда уменьшите объем выборки снова. Более точная статистика,
вычисленная ANALYZE
выполнение с высоким значением innodb_stats_sample_pages
может быть вытерт позже.
Хотя не возможно определить объем выборки на основе на таблицу, меньшие таблицы обычно требуют, чтобы меньше
индексировали выборки, чем большие таблицы. Если у Вашей базы данных есть много больших таблиц, рассмотрите
использование более высокого значения для innodb_stats_sample_pages
чем если бы у Вас есть главным образом меньшие
таблицы.