Имя: Пароль:
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 лет так и не смогли радикально решить проблему.

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