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 можно найти здесь.