|
Долгое выполнение запроса. | ☑ | ||
---|---|---|---|---|
0
uytreq
20.05.16
✎
13:39
|
Добрый день!
Очень долго отрабатывает запрос. Простенький запрос делает выборку по табличной части документа с рядом условий ГДЕ. Ни каких временных и виртуальных таблиц, итогов и группировок, тупо построчная выборка. Даже смысла нет приводить его. Не типовая доработка. База перевелась с БУ 2.0 на БУ 3.0 База файловая. В БУ 3_0 зависает при получении данных Запрос.Выполнить(). Тестируется в консолях запросов. Количество записей за месячный период порядка 10 000. В 2.0 время выполнения - 1-2 сек, в 3.0 время выполнения 20 мин. Тестирование/исправление сделано. Перепроверял на разных последних версиях платформы. Кто может сталкивался, что можете предложить? |
|||
1
Timon1405
20.05.16
✎
13:40
|
Раз нет смысла приводить текст, может нет смысли и обсуждать?
|
|||
2
hhhh
20.05.16
✎
13:42
|
(0) проверьте, может враги вставили туда слова ".Ссылка" в запрос.
|
|||
3
LordCMEPTb
20.05.16
✎
13:42
|
Что значит "Тестируется в консолях запросов"?
Если память не изменяет, там сразу же данные выбирают. Тогда возникает вопрос, время выполнения увеличилось или все же время вывода в ту же консоль? Кстати, будет ли разница, если то же самое проверить под толстым клиентом? |
|||
4
Рэйв
20.05.16
✎
13:43
|
+(2)а может даже .Ссылка.Ссылка
Видал я таких оригиналов:-) |
|||
5
Жан Пердежон
20.05.16
✎
13:44
|
База файловая, РЛС есть?
|
|||
6
uytreq
20.05.16
✎
15:28
|
(1) Не вижу сложности представить выборку из ТЧ с парой примитивных условий ГДЕ и без всяких итогов, иерархий, группировок и тд
|
|||
7
uytreq
20.05.16
✎
15:29
|
(2) Разименование действительно есть, но не глубокое
|
|||
8
uytreq
20.05.16
✎
15:33
|
(3) Тестируется, значит запускается в консолях запросов в 2_0 и 3_0. В 2_0 время выполнения не выводится, но данные получаются(заполняются) за секунды. В 3_0 выводится время выполнения = 20 мин + прорисовка.
Один и тот же текст запроса на одних и тех же данных с одинаковыми параметрами. Разница лишь в том, что одна база 2_0, а вторая - та же, обновленная до 3_0 |
|||
9
uytreq
20.05.16
✎
15:33
|
(5) РЛС не настроен
|
|||
10
uytreq
20.05.16
✎
15:36
|
Повторюсь:
Один и тот же запрос на одних и тех же данных в 2_0 работает пару секунд, а в переведенной на 3_0 20 минут. Вопрос не в правильности запроса. При этом другими запросами проверено, что в базе нет задвоений данных. |
|||
11
Dmitrii
гуру
20.05.16
✎
15:37
|
(6) >> Не вижу сложности....
тогда обсуждать действительно нечего. Раз всё так просто. А по сути - чудес не бывает. Если время меняется на несколько порядков, то проблема именно в тексте запроса. |
|||
12
hhhh
20.05.16
✎
15:37
|
(10) показывайте уже вашего друга
|
|||
13
Timon1405
20.05.16
✎
15:37
|
А если не выводить данные то сам Запрос.выполнить() быстро работает? есть подозрение что при выводе в табличный документ делаются запросы к базе, например в обработке получения представления
|
|||
14
uytreq
20.05.16
✎
15:38
|
ВЫБРАТЬ
ПоступлениеНаРасчетныйСчетИмРаспределение.ТипПрофОрганизации.ТипДляСбораВала КАК ТипОрганизации, ПоступлениеНаРасчетныйСчетИмРаспределение.Сумма + ПоступлениеНаРасчетныйСчетИмРаспределение.ОставляютСебе + ПоступлениеНаРасчетныйСчетИмРаспределение.СуммаКПередачеПоАвизо КАК Сумма, ПоступлениеНаРасчетныйСчетИмРаспределение.Ссылка КАК Ссылка, ПоступлениеНаРасчетныйСчетИмРаспределение.Ссылка.Организация КАК Организация, ПоступлениеНаРасчетныйСчетИмРаспределение.ПроцентРаспределения КАК ПроцентРаспределения ИЗ Документ.ПоступлениеНаРасчетныйСчет.ИмРаспределение КАК ПоступлениеНаРасчетныйСчетИмРаспределение ГДЕ ПоступлениеНаРасчетныйСчетИмРаспределение.Ссылка.Дата >= &ДатаНач И ПоступлениеНаРасчетныйСчетИмРаспределение.Ссылка.Дата <= &ДатаКон И ПоступлениеНаРасчетныйСчетИмРаспределение.Ссылка.Проведен = ИСТИНА И ПоступлениеНаРасчетныйСчетИмРаспределение.Ссылка.НКО_Источник.ТипыИсточников = &ТипИсточника И ПоступлениеНаРасчетныйСчетИмРаспределение.Ссылка.Организация = &Организация |
|||
15
uytreq
20.05.16
✎
15:38
|
нате)
|
|||
16
uytreq
20.05.16
✎
15:39
|
(13) Запрос.Выполнить() зависает, дождаться не могу
|
|||
17
Fragster
гуру
20.05.16
✎
15:39
|
замените .ссылка. на внутреннее соединение
|
|||
18
uytreq
20.05.16
✎
15:40
|
Только про "Учетные данные надо хранить в регистрах" не надо. Не мной это писано...
|
|||
19
uytreq
20.05.16
✎
15:40
|
(17) Уже делал
|
|||
20
Fragster
гуру
20.05.16
✎
15:40
|
не вижу
|
|||
21
Timon1405
20.05.16
✎
15:40
|
ПоступлениеНаРасчетныйСчетИмРаспределение составной тип?
|
|||
22
Лохматые Уши
20.05.16
✎
15:41
|
(0) Проверь интервал выборки. Возможно в 2.0 выбираешь за день, в 3.0 за 3 года.
|
|||
23
uytreq
20.05.16
✎
15:42
|
(21) Это нетиповая ТЧ ПНРС
|
|||
24
uytreq
20.05.16
✎
15:43
|
(22) Все проверено 10 раз + акт анализа базы со скриншотами сделан и предоставлен начальству)))
|
|||
25
uytreq
20.05.16
✎
15:43
|
Делать то что? Кто сталкивался?
|
|||
26
hhhh
20.05.16
✎
15:44
|
(25) индексирование проверь. Тупо забыл про индексы.
|
|||
27
Fragster
гуру
20.05.16
✎
15:45
|
(25) если тестить не консолью, а внутри обработки без контекста, не выводя никуда результат, а только выполняя запрос, будет тормозить?
|
|||
28
Timon1405
20.05.16
✎
15:45
|
видимо дело все-таки в разыменовании полей через точку
зачем ".Ссылка" вытаскивать вообще? просто запрос отработает? ПоступлениеНаРасчетныйСчетИмРаспределение.ТипПрофОрганизации.ТипДляСбораВала КАК ТипОрганизации, ПоступлениеНаРасчетныйСчетИмРаспределение.Сумма + ПоступлениеНаРасчетныйСчетИмРаспределение.ОставляютСебе + ПоступлениеНаРасчетныйСчетИмРаспределение.СуммаКПередачеПоАвизо КАК Сумма, ПоступлениеНаРасчетныйСчетИмРаспределение КАК Ссылка ИЗ Документ.ПоступлениеНаРасчетныйСчет.ИмРаспределение КАК ПоступлениеНаРасчетныйСчетИмРаспределение |
|||
29
Fragster
гуру
20.05.16
✎
15:46
|
если не менялась платформа и структура данных, то изменение поведения только от того, управляемая форма, или нет.
|
|||
30
uytreq
20.05.16
✎
15:46
|
(28) Это тормознутая часть более сложного и большого запроса
|
|||
31
Fragster
гуру
20.05.16
✎
15:47
|
(30) почему тогда есть уверенность, что тормозит именно эта часть?
|
|||
32
uytreq
20.05.16
✎
15:47
|
(29) Запрос.Выполнить() запускается в модуле объекта одинаково, в 2_0 норм, в 3_0 зависает намертво
|
|||
33
Dmitrii
гуру
20.05.16
✎
15:47
|
Я не понял. А запрос в принципе работает?
В (0) указано время - 20 минут, а в (16) - "дождаться не могу" |
|||
34
Fragster
гуру
20.05.16
✎
15:48
|
(32) вот ты прямо отладчиком остановился перед выполнить и нажал на f10?
|
|||
35
hhhh
20.05.16
✎
15:48
|
(32) проверь
ВЫБРАТЬ ПоступлениеНаРасчетныйСчетИмРаспределение.ТипПрофОрганизации.ТипДляСбораВала КАК ТипОрганизации, ПоступлениеНаРасчетныйСчетИмРаспределение.Сумма + ПоступлениеНаРасчетныйСчетИмРаспределение.ОставляютСебе + ПоступлениеНаРасчетныйСчетИмРаспределение.СуммаКПередачеПоАвизо КАК Сумма, ПоступлениеНаРасчетныйСчетИмРаспределение.Ссылка КАК Ссылка, ПоступлениеНаРасчетныйСчетИмРаспределение.Ссылка.Организация КАК Организация, ПоступлениеНаРасчетныйСчетИмРаспределение.ПроцентРаспределения КАК ПроцентРаспределения ИЗ Документ.ПоступлениеНаРасчетныйСчет.ИмРаспределение КАК ПоступлениеНаРасчетныйСчетИмРаспределение ГДЕ ПоступлениеНаРасчетныйСчетИмРаспределение.Ссылка.Дата >= &ДатаНач И ПоступлениеНаРасчетныйСчетИмРаспределение.Ссылка.Дата <= &ДатаКон если быстро, то потом начинай вдумчиво добавлять в запрос по одной строчке |
|||
36
uytreq
20.05.16
✎
15:48
|
(31) Потому, что она тормозит отдельно от всего остального. И отрабатывает на первых этапах получения данных, остальное уже на меньших данных после выборки
|
|||
37
Timon1405
20.05.16
✎
15:48
|
И ПоступлениеНаРасчетныйСчетИмРаспределение.Ссылка.НКО_Источник.ТипыИсточников = &ТипИсточника
НКО_Источник - составной тип? Может его ВЫРАЗИТЬ попробовать? |
|||
38
uytreq
20.05.16
✎
15:49
|
(33) Да запрос работает и там и там. В двойке 3 СЕК, в 3_0 20 МИН
|
|||
39
Fragster
гуру
20.05.16
✎
15:49
|
(38) -> (29)
|
|||
40
uytreq
20.05.16
✎
15:49
|
(37) там перечисление из 3 значений, врядли из-за этого
|
|||
41
uytreq
20.05.16
✎
15:50
|
(34) вот я прям остановился на выполнить и нажал ф10)))
|
|||
42
hhhh
20.05.16
✎
15:52
|
(40) может и из-за этого, потому что там, если попало в индекс, то выполняется мгновенно, а если индекс не применяется, то может всю базу сутками лопатить. Проверь индексирование этих полей.
|
|||
43
uytreq
20.05.16
✎
15:53
|
(33) 20 минут - это в консоли запросов, а "дождаться на могу" в отладчике на строке Запрос.Выполнить()
|
|||
44
uytreq
20.05.16
✎
15:54
|
(42) ок счас проверю
|
|||
45
Fragster
гуру
20.05.16
✎
15:55
|
и прям структура данных одинаковая (включая индексы)? и внутреннее соединение вместо .ссылка. сделал? и результирующий запрос на показал?
|
|||
46
hhhh
20.05.16
✎
15:58
|
может вообще в другом месте тормозить, там же большой запрос
|
|||
47
uytreq
20.05.16
✎
15:59
|
(46) я в консоли запускаю не весь запрос, а вот эту часть, она логически предшествует остальным
|
|||
48
Лохматые Уши
20.05.16
✎
16:00
|
Автор мозги парит, предлагая обсудить простейший запрос.
Полностью запрос нужно смотреть. |
|||
49
uytreq
20.05.16
✎
16:00
|
(45) я делал тестирование/исправление там делается переиндексация по моему
|
|||
50
uytreq
20.05.16
✎
16:02
|
(48) я кусок кода запроса запроса вставляю в модули объектов и они тормозят, в этом куске кода вопрос, можете считать, что остального кода запроса вообще нет. Я об этом сказал лишь для ответа - зачем выбирать ссылку.
|
|||
51
Fragster
гуру
20.05.16
✎
16:03
|
(47) мля. в консоли ты получаешь еще данные на клиента. тем более, что мы не знаем, какой консолью ты пользуешься. в (34) я спрашивал именно про вопрос из (0).
зачем голову иметь нам всем? отсеки сам ненужное, не надо нам сразу несколько слабосвязанных вопроса задавать. запрос из (0) не может сильно отличаться по производительности на одинаковой структуре данных, не зависимо от остальной структуры. Значит тормозит либо что-то вокруг этого запроса, либо сам запрос, который тормозит - не такой. |
|||
52
Fragster
гуру
20.05.16
✎
16:03
|
*про запрос из (0)
|
|||
53
Fragster
гуру
20.05.16
✎
16:04
|
дай тимвьювер
|
|||
54
Fragster
гуру
20.05.16
✎
16:04
|
о отладчиком
|
|||
55
uytreq
20.05.16
✎
16:06
|
(54) я конечно понимаю, что вы скажете что я имею вам мозг, но специфика моей конторы не позволяет мне дать Вам дотуп, к большому моему сожалению
|
|||
56
Fragster
гуру
20.05.16
✎
16:07
|
тогда предлагаю поставить скуль и поизучать планы запросов в 2.0 и 3.0
|
|||
57
uytreq
20.05.16
✎
16:08
|
(54) вот сейчас проверил так, вставил в код модулей объекта в двойке и тройке один и тот же код запроса, приведенный выше. В 2_0 выполняется за секунда (сразу перескакивает Запрос.Выполнить()) в 3_0 зависает. Чтобы исключить косяки консолей
|
|||
58
hhhh
20.05.16
✎
16:09
|
(57) запрос из (35) проверили?
|
|||
59
uytreq
20.05.16
✎
16:09
|
то есть дело не в консолях и не в управляемых формах и не в общем большом запросе, дело в конкретно неработающей части запроса.
|
|||
60
Fragster
гуру
20.05.16
✎
16:12
|
Запись = Новый ЗаписьXML();
Запись.УстановитьСтроку(); СериализаторXDTO.ЗаписатьXML(Запись, Запрос.Параметры); Сообщить(Запись.Закрыть()); в 2.0 и 3.0 |
|||
61
uytreq
20.05.16
✎
16:12
|
(59) оставил в условии только отбор по периоду сижу жду, в 2 отработало бы уж
|
|||
62
Fragster
гуру
20.05.16
✎
16:12
|
и платформа одинаковая?
|
|||
63
Fragster
гуру
20.05.16
✎
16:13
|
и .ссылка. в ГДЕ и Выбрать на внутреннее соединение уже давно заменено?
|
|||
64
hhhh
20.05.16
✎
16:15
|
(61) уменьшайте дальше. выбросьте строчку
ПоступлениеНаРасчетныйСчетИмРаспределение.ТипПрофОрганизации.ТипДляСбораВала КАК ТипОрганизации, |
|||
65
hhhh
20.05.16
✎
16:17
|
(61) даты проверьте ДатаНач и ДатаКон. За разные даты попробовать
|
|||
66
alle68
20.05.16
✎
16:17
|
(61) Начни с простого: сколько записей и времени у такого запроса? Затем цепляй ТЧ по частям и найдёшь узкое место.
ВЫБРАТЬ Д.Ссылка, Д.Организация ИЗ Документ.ПоступлениеНаРасчетныйСчет КАК Д ГДЕ Д.Дата МЕЖДУ &ДатаНач И &ДатаКон И Д.Проведен И Д.НКО_Источник.ТипыИсточников = &ТипИсточника И Д.Организация = &Организация |
|||
67
ViSo76
20.05.16
✎
16:18
|
(14) Посмотри битву в Подскажите, как лучше оптимизировать запрос твой кусок нужно переписать подобно посту 12. Перепиши и сообщи результат.
PS: Не понятно ПоступлениеНаРасчетныйСчетИмРаспределение.ТипПрофОрганизации.ТипДляСбораВала если там один справочник, то можно и так оставить, но я бы левым прикрутил. |
|||
68
uytreq
20.05.16
✎
16:20
|
Извиняюсь начальство отвлекает, перепробую все советы, обязательно отпишусь при любом результате.
|
|||
69
ViSo76
20.05.16
✎
16:20
|
(66) Ещё И Д.НКО_Источник.ТипыИсточников = &ТипИсточника непонятно что за тип, составной или нет
|
|||
70
uytreq
20.05.16
✎
17:38
|
Решилось заменой всех разименований на внутренние соединения. Все равно в 2_0 работает быстрее. Но в 3_0 теперь терпимое время выполнения.
Всем спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |