Имя: Пароль:
1C
1С v8
AQO — адаптивная оптимизация запросов в PostgreSQL
0 tomsv
 
28.10.22
17:30
В СУБД 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
Фактически это подобие процедурного кэша в МС СКЛ.
По мере необходимости эксперименты продолжу. У кого есть какие-то наработки по работе с этим модулем, давайте делиться опытом!
1 Фрэнки
 
28.10.22
17:35
Возьму ветку на заметку :-)
2 Волшебник
 
модератор
28.10.22
17:35
(0) О, класс!
3 ansh15
 
28.10.22
19:15
>>  у постгре нет процедурного кэша
Есть. PREPARE/EXECUTE называется.
В pgbench есть параметр -M prepared, с ним тест выполняется до 1.5-1.7 раза быстрее.
Используется ли эта возможность в 1С я не знаю.
4 ansh15
 
28.10.22
19:34
Модуль года два как доступен https://habr.com/ru/company/postgrespro/blog/508766/
Есть ли наработки и статистика по его применению в среде 1С тоже неизвестно.
Как то собрал Postgres с ним для теста, в режимe learn в бугхалтерии и зарплате неоспоримых преимуществ не ощутил,
а в forced  сваливалось в блокировки, на одном пользователе..
И потом, это проприетарная штука, сегодня дали в общий доступ, завтра забрали, не все же будут покупать Pro редакцию.
5 Arh01
 
28.10.22
22:15
(1) +1
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан