В СУБД Postgres Pro Std 14.x (которая вроде как бесплатная) появился дополнительно поставляемый модуль aqo. Раньше он был доступен только в версиях Enterprise.
Появилось желание/необходимость протестировать, как работает эта штука.
Собственно, был запрос, генерируемый платформой, который тормозил (Отображение динамического списка с РЛС).
Многократное его повторение никаких изменений не вызывало, план запроса не менялся из раза в раз, что логично, так как у постгре нет процедурного кэша, как у МС СКЛ.
Лезем в postgresql.conf, добавляем в shared_preloaded_libraries модуль aqo, устанавливаем aqo.mode = 'learned' , рестартуем постгре.
После этого уже на второй раз выполнения этого запроса план начинает меняться и в итоге время исполнения сокращается с 23299.460 ms до 2508.456 ms т.е. практически в 10 раз!
Ссылка на план запроса ДО
https://explain.tensor.ru/archive/explain/d3db83af15cd62a32958c6578c40a57e:0:2022-10-28#explain
Ссылка на план ПОСЛЕ
https://explain.tensor.ru/archive/explain/79c74e171e3d6eadbd31870fad9177a9:0:2022-10-28#explain
Понимаю, что можно было попросить программиста 1С оптимизировать код, но не это было целью, собственно.
Вообще у модуля AQO много разных режимов работы. Обучение можно останавливать и использовать "имеющиеся наработки", чистить и прочее. Почитать можно тут
https://postgrespro.ru/docs/postgrespro/14/aqo
Фактически это подобие процедурного кэша в МС СКЛ.
По мере необходимости эксперименты продолжу. У кого есть какие-то наработки по работе с этим модулем, давайте делиться опытом!