9
Классификация запросов
Режимы learn и frozen
Режим controlled
статистика применяется (use_aqo),
но обновляется (learn_aqo) только для известных запросов
стабилизация без «заморозки»
Режим intelligent
автоматическое управление обучением и применением (auto_tune)
сначала только сбор статистики;
применение при реальном улучшении, иначе — отказ от использования
Тонкая настройка
ручное управление свойствами use_aqo, learn_aqo, auto_tune
При включенной классификации (aqo.advanced = on) статистика
собирается отдельно для каждого класса запросов; класс составляют
запросы, у которых деревья разбора отличаются только константами.
В этом случае к уже рассмотренным режимам работы learn и frozen
добавляются еще два: controlled и intelligent (без классификации они не
отличаются от обычного learn).
В режиме controlled модель применяется для уже известных классов
запросов: она продолжает обучаться на них (свойство learn_aqo) и
используется для уточнения оценок (use_aqo). Но для новых классов
запросов статистика не собирается. Этот режим можно использовать
вместо frozen, чтобы тратить ресурсы только на нужные запросы, но
при этом не «замораживать» статистику, а продолжать обновлять ее.
В режиме intelligent расширение самостоятельно управляет обучением
и использованием (свойство auto_tune). Новые запросы сначала
выполняются шесть раз без AQO, а затем обученная модель начинает
использоваться (включается свойство use_aqo). Далее модель может
выключаться или включаться в зависимости от того, уменьшает ли ее
использование время планирования и выполнения запроса. Если после
50 итераций улучшения не происходит, AQO перестает собирать
статистику по данному классу запросов и пытаться ее применить
(выключает свойства use_aqo и learn_aqo).
Этот режим работы следует применять с осторожностью, поскольку
принимаемые решения могут оказаться недостаточно точными.
Свойствами use_aqo, learn_aqo и auto_tune можно управлять вручную
отдельно для каждого класса запросов.