4.1. AQO (адаптивная оптимизация запросов)
AQO — это расширение Shardman, которое использует статистику выполнения запросов для улучшения оценки количества строк, что может способствовать выбору лучшего плана и, как следствие, ускорению запросов.
Для включения AQO выполните следующие шаги:
Добавьте
aqo
в параметрshared_preload_libraries
в sdmspec.json.Создайте расширение
aqo
на всех узлах.SET shardman.broadcast_ddl TO ON; CREATE EXTENSION aqo; RESET shardman.broadcast_ddl;
Установите для
aqo.mode
значениеlearn
и выполняйте запросы, которые вы хотите оптимизировать, с помощьюEXPLAIN ANALYZE
, пока план не перестанет меняться.BEGIN; SET aqo.mode = 'learn'; EXPLAIN ANALYZE <query> RESET aqo.mode; COMMIT;
Обратите внимание, что статистика aqo собирается отдельно для каждого узла в кластере Shardman. Поэтому вам придётся повторить этот процесс на каждом узле в кластере. В качестве альтернативы можно установить для
aqo.mode
значениеlearn
и дать приложению поработать в этом режиме некоторое время, а затем вернуть его в режим по умолчанию (controlled
).
Примечание
AQO не будет работать для запросов, содержащих меньшее количество соединений, чем указано в aqo.join_threshold
(по умолчанию 3).
Полную документацию по AQO можно найти здесь.