Имя: Пароль:
1C
1С v8
Почему postgres создает разные планы запроса?
0 bdenisska
 
11.03.19
10:25
Здравствуйте, имеется проблема с отчетом по задачам. Раскопки привели к тому что в одной базе postgres составляет план запроса 1 в другой базе план другой. Что в итоге дает при равных условиях скорость формирования отчета в одной базе 2-3 сек, в другой 20-50 минут. Про влияние статистики в курсе, сбрасывал (в меделнной базе) - не помогло. Вопрос: Что еще может влиять и как исправить? могу предоставить скрины с планом отчета из pgadmin
1 arsik
 
гуру
11.03.19
10:30
(0) Конфиги то одинаковые?
2 arsik
 
гуру
11.03.19
10:30
+(1) Конфиги постгре и версии.
3 MCh
 
11.03.19
10:48
надо сбросить в быстрой а не в медленной. будет все медленно. у меня так было
4 Вася Теркин
 
11.03.19
10:59
А если быструю скопировать она остается быстрой или становится медленной?
5 bdenisska
 
11.03.19
11:01
Быстрая остается быстрой, быструю сделал сброс статистики - быстрая осталась быстрой (в ответ на(3).
6 bdenisska
 
11.03.19
11:02
(1) Одинаковые? они на одном сервере постгрес и 1с
7 Провинциальный 1сник
 
11.03.19
11:07
enable_nestloop=off решит все проблемы
8 bdenisska
 
11.03.19
11:10
(7) Дай обниму)))) Вопрос снят, действительно не обратил внимание на параметр вложенных циклов.
9 Провинциальный 1сник
 
11.03.19
11:11
(8) Не очень то радуйтесь, кое-где будет медленнее)
10 Провинциальный 1сник
 
11.03.19
11:12
+(9) Но радикального тупизма не будет.
11 seevkik
 
11.03.19
11:12
(7) ловите экстрасенса!
12 bdenisska
 
11.03.19
11:13
Я понимаю что индексы уже не будут рабоатьь должным образом. Вопрос в другом, почему возникла такая ситуация? Две аналогичных базы, и такой разный результат и сброс статистики никак не влияет?
13 Провинциальный 1сник
 
11.03.19
11:17
(12) Всё будет работать нормально. Просто постгрес начнет использовать нестед луп не когда попало, а только когда без него в принципе не обойтись.

Оптимизатор в постгресе чересчур оптимистичный, и очень часто занижает стоимость вложенных циклов. ОСОБЕННО, если используются подзапросы, а это в 1с сплошь и рядом.
14 bdenisska
 
11.03.19
11:19
(13) Спасибо за ответы и подсказки! Теперь все встало на свои места
15 ansh15
 
11.03.19
11:33
(12) Так сами SQL запросы, генерируемые сервером приложений 1С для PostgreSQL для быстрой и медленной баз, одинаковые символ в символ, или все же есть какое-то различие?
16 bdenisska
 
11.03.19
12:43
(15) Абсолютно одинаковые, из одного дампа были подняты
17 bdenisska
 
11.03.19
12:48
(15) А немного не понял вопроса сначала, дело в том что нет времени сейчас разбираться, НО делал эксплейн запроса который уже летит в постгрес. Скорость исполнения аналогичная была, для быстрой быстро для медл. соотв. - различаются планы построения запроса, писал об этом
18 Провинциальный 1сник
 
11.03.19
12:59
(17) Эта багофича в постгресе проявилась сразу же, как только 1с начала его использовать. И за 10 лет так и не смогли радикально решить проблему.

Правильнее было бы при наличии подзапросов принимать решение о стратегии выполнения запросов верхнего уровня только после того, как выполнятся подзапросы и будет известна точно их статистика. Но для этого нужно радикально переделывать движок субд, чего никто делать не хочет.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан