|
Запрос намертво зависает на postgresql | ☑ | ||
---|---|---|---|---|
0
edem911
22.03.19
✎
09:31
|
Добрый день!
Платформа 8.3.14.1565 Сервер SQL Postgresql 10 Есть запрос с левым соединением по измерению регистра
Запрос наглухо виснет в базе на postgresql. В файловой формируется за 10 сек В MS SQL тоже. postgresql настроен по всем канонам. Поле "Жилец" индексируется. Разработчики конфигурации уже 2 неделю анализируют базу или говорят, что анализируют( Помогите, у меня уже варианты закончились. |
|||
1
antihacker
22.03.19
✎
09:37
|
А постгри запатчен патчем для 1С ? У меня ничего не зваисает. Давно сижу на постгри. Правда патч на 9,6 верисю. Судя по версии твего постгри он не запатчен
|
|||
2
edem911
22.03.19
✎
09:45
|
(1) А вот об этом я не подумал...
На сайте postgre рекомендуют 9.4.14 и 9.6.5. Щас попробуем, спасибо за наводку. |
|||
3
antihacker
22.03.19
✎
09:50
|
Обязательно отпишись.
|
|||
4
cons24
22.03.19
✎
10:48
|
(0) вообще в "типичных причинах неоптимальной работы запросов" на ИТС как раз написано про соединение с виртуальными таблицами.
Так что как вариант - поместить каждую виртуальную во временную, и лишь потом соединять. |
|||
5
novichok79
22.03.19
✎
10:50
|
(1) на 10-ую патч уже не нужен, насколько я знаю. там сделано через расширение.
|
|||
6
arsik
гуру
22.03.19
✎
10:54
|
(5) откуда ставил постгре? Ставь из репозитория postgrespro.ru
|
|||
7
arsik
гуру
22.03.19
✎
10:56
|
||||
8
unregistered
22.03.19
✎
10:58
|
(0) Перепишите запрос на пакет и ипите мозг.
> Разработчики конфигурации уже 2 неделю анализируют базу или говорят, что анализируют Они-то как раз ипут вам мозг. Это очевидно. |
|||
9
unregistered
22.03.19
✎
11:01
|
(0) Для начала можно прост избавиться от ошибок в виде сравнения даты с NULL.
Типа КВП_СведенияОПроживающихНаДату.ДатаИзменения < КВП_СведенияОПроживающихНаДатуБезОтбора.ДатаИзменения. Вообще вот это поле (ниже) - оно что? Каков его смысл? Что там должно быть, если условие в КОГДА не выполняется? Почему нет ИНАЧЕ? |ВЫБОР | КОГДА КВП_СведенияОПроживающихНаДату.ДатаИзменения < КВП_СведенияОПроживающихНаДатуБезОтбора.ДатаИзменения | ТОГДА КВП_СведенияОПроживающихНаДатуБезОтбора.ДатаИзменения | КОНЕЦ КАК ДатаВыбытия |
|||
10
unregistered
22.03.19
✎
11:03
|
+ к (9) Вообще авторы текста запроса из (0) в курсе что такое правое и левое соединение и чем они отличаются? В тексте явно перепутаны право и лево.
|
|||
11
unregistered
22.03.19
✎
11:03
|
(8)* "и ипите" читать как "и НЕ ипите"
Извиняюсь. |
|||
12
edem911
22.03.19
✎
11:27
|
(9) Да сам отчет в конкретном случае я переписал. Но проблема в том что в типовом решении они используют такой отбор проживающих везде где нужно получить таблицу проживающих, там не правильная логика еще и самого регистра. И в самом первом обращении к разработчикам я указывал конкретно на этот кривой запрос, а они еще чето анализируют. Просто переписывать пол конфы из-за "крутых" разработчиков.
Кстати запрос вывел информацию спустя 57 596 сек, в файловой базе выводит за 18 сек. |
|||
13
Провинциальный 1сник
22.03.19
✎
11:28
|
Моё любимое "enable_nestloop=off" в очередной раз
|
|||
14
edem911
22.03.19
✎
11:36
|
(13) включал выключал - без результата, делал индексацию, чистил мусор.
|
|||
15
Йохохо
22.03.19
✎
11:47
|
ВЫБРАТЬ РАЗРЕШЕННЫЕ X СрезПоследних Х КВП_СведенияОПроживающихНаДату.ЛицевойСчет.Адрес.Владелец
вам самим то не жалко его? |
|||
16
edem911
22.03.19
✎
11:53
|
(9) Спасибо и за эту наводку
Кстати оптимизированный запрос, выводиться за 8 сек)))
|
|||
17
edem911
22.03.19
✎
11:55
|
А вот так за 6 сек.
|
|||
18
Йохохо
22.03.19
✎
12:30
|
что мешает использовать вместо ЕСТЬNULL(СОтбором.ЛицевойСчет.Адрес.Владелец, БезОтбора.ЛицевойСчет.Адрес.Владелец) КАК Здание ЕСТЬNULL(СОтбором.ЛицевойСчетАдресВладелец, БезОтбора.ЛицевойСчетАдресВладелец) КАК Здание ?????
|
|||
19
Йохохо
22.03.19
✎
12:31
|
еще и на левое
|
|||
20
edem911
22.03.19
✎
12:50
|
(18) ничего, здесь просто были заменены таблицы регистров на временные, итоговый запрос не менялся
|
|||
21
Йохохо
22.03.19
✎
12:51
|
(20) не понимаете да?
|
|||
22
edem911
22.03.19
✎
12:57
|
(21) понимаю, я так и переделал, изначально это место сформировалось конструктором при замене таблицы регистра на временную
|
|||
23
Йохохо
22.03.19
✎
12:59
|
разработчикам вашим не показывайте, а то они будут к вам относиться как вы к ним
|
|||
24
edem911
22.03.19
✎
13:04
|
В итоге имеем время вывода 3 сек.
Всем спасибо!)
|
|||
25
Йохохо
22.03.19
✎
13:09
|
осталось с нул порешать, есть он или кушать
|
|||
26
edem911
22.03.19
✎
18:15
|
В итоге больше всего нравиться ответ разработчиков.
Выглядело это примерно так: 07.03-Я- У нас не формируется отчет, проблема в запросе вот в этом месте. 07.03-Р-У нас все работает на релизе "таком то", обновите конфигурацию 07.03-Я- релиза "такого -то" нет на оф. сайте 07.03-Р- это тестовый релиз, вот вам ссылка 07.03-Я- Обновили проблема сохранилась 11.03-Р- Дайте копию базы 11.03-Я- Вот ссылка 12.03-Я- Есть результат? 12.03-Р- база анализируется 13.03-Я- есть результат? 14.03-Р- данные анализируются 15.03-Я- есть результат? 15.03-Р- база тестируется 19.03-Я- Есть результат?Сроки? 20.03-Р- тестируется сроки назвать не можем 22.03-Я- Мы решили проблему своими силами 22.03-Р- Вчера вопрос был передан в отдел разработки на рассмотрение 22.03-Я(В шоке)- а что вы делали до этого? 22.03-Р- до этого момента проблема анализировалась линией консультации. Как будет ответ мы вам сообщим. Занавес. |
|||
27
Провинциальный 1сник
24.03.19
✎
19:56
|
(26) В среднем две недели приходится бодаться с линией консультаций, чтобы они наконец-то признали ошибку ошибкой и передали на рассмотрение разработчиком. Это норма для 1с.
|
|||
28
palsergeich
24.03.19
✎
21:22
|
(26) Купите корпоративную поддержку и к Вашим проблемам будут относиться уважительнее (С)
|
|||
29
stopa85
25.03.19
✎
08:30
|
(24) Еще бы сравнить это оптимизированый код, с файловой и MS SQL.
|
|||
30
unregistered
25.03.19
✎
08:41
|
(29) В этом, думаю, особого смысла нет. Результат сравнения больше будет зависеть не от конкретной СУБД, а от различных прочих условий (общий размер данных, размер данных попадающих в отбор и пр.).
В особенности если верить автору ветки в (12): "там не правильная логика еще и самого регистра". И судя по самому запросу, я склонен с ним согласиться. |
|||
31
edem911
25.03.19
✎
09:33
|
(29) в среднем, во всех вариантах, время выполнения 3-5 сек.
|
|||
32
sqr4
25.03.19
✎
09:57
|
(12) если это та конфа о которой я думаю, то там в регистре накопления УПЖКХ_Начисления - есть измерение Количество, я так и не разобрался зачем)
|
|||
33
edem911
25.03.19
✎
12:38
|
(32) да-да есть такое) использование нигде не встречается, может код в защищенных обработках)
|
|||
34
sqr4
25.03.19
✎
12:45
|
(33) Ну пару раз при написании собственных квитанций, я натыкался на то что количество сворачивалось, а не суммировалось. И каждый раз с криком на весь отдел "Количество же измерение" задача решалась.
А так да, в старых релизах в зашифрованных модулях. |
|||
35
edem911
28.05.19
✎
12:32
|
АП
Еще хотел написать, если нужно использовать запрос к виртуальной таблице(пример "Срез последних") с пост условием 100 раз подумайте использовать ли такой механизм в postgre. Столкнулся со следующей задачей "Получить действующие на дату начисления" регистра сведений, казалось бы что может быть проще. Пишу запрос
Время выполнения запроса 870 сек. понятное дело что в отчете его особо не используешь. Дай думаю переделаю запрос без ВТ, сделал следующее
В итоге время выполнения 0,943 сек. в общем -не перестаю удивляться) |
|||
36
Simod
28.05.19
✎
13:31
|
(35) При реализации среза последних самостоятельно нужно не забывать про "Активность".
|
|||
37
edem911
28.05.19
✎
13:37
|
(36) точно, спасибо за наводку
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |