|
медленно выполняется запрос | ☑ | ||
---|---|---|---|---|
0
Александр056
05.05.16
✎
08:11
|
Всем привет! ситуация такова, фоновым заданием перепровдятся документы, которые встают в нашу "очередь",но в консоли заметил что проводиться стало оооооочень медленно, по 80-90 сек документ реализации, поршел замером производительности, увидел запрос на котором стоит 96% времени, запрос типовой, руками не трогали, вытащил в консоль, 3-5 сек выполняется... почему фоном настолько дольше?
корд запроса: ВЫБРАТЬ СписанныеТовары.НомерСтроки, СписанныеТовары.СерияНоменклатуры КАК СерияНоменклатуры, СписанныеТовары.ДокументПартии, СписанныеТовары.ЗаказПартии КАК ЗаказПартии, СписанныеТовары.Качество КАК Качество, СписанныеТовары.Склад КАК Склад, СписанныеТовары.ДопустимыйСтатус1, СписанныеТовары.ДопустимыйСтатус2, СписанныеТовары.ДопустимыйСтатус3, СписанныеТовары.ДопустимыйСтатус4, СписанныеТовары.Номенклатура КАК Номенклатура, СписанныеТовары.НомерСтрокиДокумента, СписанныеТовары.Организация КАК Организация, СписанныеТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, СписанныеТовары.СчетУчетаБУ КАК СчетУчетаБУ, СписанныеТовары.ПринятыеСчетУчетаБУ, СписанныеТовары.СписыватьТолькоПоЗаказу, СписанныеТовары.ЗаказСписания, СписанныеТовары.КодОперацииПартииТоваров ПОМЕСТИТЬ СписанныеТовары ИЗ РегистрСведений.СписанныеТовары КАК СписанныеТовары ГДЕ СписанныеТовары.Регистратор = &Ссылка ИНДЕКСИРОВАТЬ ПО Организация, Номенклатура, ХарактеристикаНоменклатуры, Качество, СчетУчетаБУ, ЗаказПартии, СерияНоменклатуры, Склад; ВЫБРАТЬ ПартииТоваровНаСкладах.ДокументОприходования, ПартииТоваровНаСкладах.Номенклатура КАК Номенклатура, ПартииТоваровНаСкладах.Склад КАК Склад, ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ПартииТоваровНаСкладах.СерияНоменклатуры КАК СерияНоменклатуры, ПартииТоваровНаСкладах.Качество КАК Качество, ПартииТоваровНаСкладах.Заказ КАК Заказ, ПартииТоваровНаСкладах.СчетУчета КАК СчетУчета, ПартииТоваровНаСкладах.Организация КАК Организация, ПартииТоваровНаСкладах.КоличествоОстаток, ПартииТоваровНаСкладах.СтоимостьОстаток ПОМЕСТИТЬ ПартииТоваровНаСкладах ИЗ РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Остатки( &Дат, Номенклатура В (ВЫБРАТЬ СписанныеТовары.Номенклатура ИЗ СписанныеТовары КАК СписанныеТовары) И Организация = &Организация) КАК ПартииТоваровНаСкладах ИНДЕКСИРОВАТЬ ПО Организация, Номенклатура, ХарактеристикаНоменклатуры, Качество, СчетУчета, Заказ, СерияНоменклатуры, Склад; ВЫБРАТЬ СписанныеТовары.НомерСтрокиДокумента КАК НомерСтрокиДокумента, ПартииТоваровНаСкладах.ДокументОприходования КАК ДокументОприходования, ПартииТоваровНаСкладах.ДокументОприходования.Представление КАК ДокументОприходованияПредставление, ПартииТоваровНаСкладах.Номенклатура, ПартииТоваровНаСкладах.Склад, ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры, ПартииТоваровНаСкладах.СерияНоменклатуры, ПартииТоваровНаСкладах.Качество, ПартииТоваровНаСкладах.Заказ, ПартииТоваровНаСкладах.КоличествоОстаток КАК Количество, ПартииТоваровНаСкладах.СтоимостьОстаток КАК Стоимость, ПартииТоваровНаСкладах.СчетУчета, ПартииТоваровНаСкладах.Организация, ВЫБОР КОГДА СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КАК ЧислоСерияНоменклатуры, ВЫБОР КОГДА ПартииТоваровНаСкладах.СчетУчета = СписанныеТовары.ПринятыеСчетУчетаБУ ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК ЧислоСтатусПартии, ВЫБОР КОГДА СписанныеТовары.ЗаказСписания = НЕОПРЕДЕЛЕНО ТОГДА 0 ИНАЧЕ ВЫБОР КОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КОНЕЦ КАК ЧислоЗаказ, ВЫБОР КОГДА СписанныеТовары.ДокументПартии = НЕОПРЕДЕЛЕНО ТОГДА 0 ИНАЧЕ ВЫБОР КОГДА СписанныеТовары.ДокументПартии = ПартииТоваровНаСкладах.ДокументОприходования ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КОНЕЦ КАК ЧислоДокументОприходования ИЗ СписанныеТовары КАК СписанныеТовары ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах ПО СписанныеТовары.Организация = ПартииТоваровНаСкладах.Организация И СписанныеТовары.Номенклатура = ПартииТоваровНаСкладах.Номенклатура И СписанныеТовары.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры И (ВЫБОР КОГДА ПартииТоваровНаСкладах.Качество = &ПустоеКачество ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА СписанныеТовары.Качество = &ПустоеКачество ТОГДА ПартииТоваровНаСкладах.Качество = &КачествоНовый ИНАЧЕ ПартииТоваровНаСкладах.Качество = СписанныеТовары.Качество КОНЕЦ КОНЕЦ) И (ПартииТоваровНаСкладах.СчетУчета = СписанныеТовары.СчетУчетаБУ ИЛИ ПартииТоваровНаСкладах.СчетУчета = СписанныеТовары.ПринятыеСчетУчетаБУ) И (ВЫБОР КОГДА СписанныеТовары.СписыватьТолькоПоЗаказу = ИСТИНА ТОГДА ВЫБОР КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии ТОГДА ВЫБОР КОГДА (НЕ СписанныеТовары.ЗаказПартии = НЕОПРЕДЕЛЕНО) ТОГДА ЛОЖЬ ИНАЧЕ ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ КОНЕЦ ИНАЧЕ ИСТИНА КОНЕЦ ИНАЧЕ ВЫБОР КОГДА ПартииТоваровНаСкладах.Заказ <> СписанныеТовары.ЗаказПартии ТОГДА ПартииТоваровНаСкладах.Заказ = &ПустойЗаказ ИНАЧЕ ИСТИНА КОНЕЦ КОНЕЦ) И (СписанныеТовары.СерияНоменклатуры = ПартииТоваровНаСкладах.СерияНоменклатуры ИЛИ ПартииТоваровНаСкладах.СерияНоменклатуры = &ПустаяСерияНоменклатуры ИЛИ СписанныеТовары.КодОперацииПартииТоваров = &КодРезервирование) УПОРЯДОЧИТЬ ПО ЧислоСерияНоменклатуры, ЧислоДокументОприходования, ЧислоЗаказ, ЧислоСтатусПартии Убыв, ДокументОприходования, ПартииТоваровНаСкладах.Склад ИТОГИ ПО НомерСтрокиДокумента; Уничтожить ПартииТОваровНаСкладах; Уничтожить СписанныеТовары параметры теже что и в процессе отладки все проверил, просто непонятно с чем связано такое длительное выполнение, причем даже если в базе в этот момент не видно каких либо движений от других пользаков. |
|||
1
rphosts
05.05.16
✎
08:14
|
убери из индекса организацию
|
|||
2
Александр056
05.05.16
✎
08:16
|
(1) это может значительно ускорить его?
|
|||
3
4St
05.05.16
✎
08:17
|
Стандартные вопросы:
Итоги по регистрам рассчитаны? База файловая или серверная? Если файловая, файл локально или в сети? Если серверная, то все регламенты обслуживания выполнены? |
|||
4
4St
05.05.16
✎
08:18
|
И между делом: имя и версия конфигурации, версия платформы?
|
|||
5
Александр056
05.05.16
✎
08:20
|
(4) началось все на 8.3.7.дальше не помню, сегодня накатили 8.3.8.1652 1с упп 1.3 клиент серверная, пользаки стучатся по сети в базу, кстати с итогами был у мен косяк, на 1 дкоумент увидел что в вирт таблице неверно рассчимтано, но так и не сделал ибо работа практически 24/7 идет...
|
|||
6
4St
05.05.16
✎
08:22
|
(5) 3-5 секунд в консоли - это тоже не особо хорошо, даже для партионного учета. Большая база? Много строк в документе?
Я бы еще проверил пользователя, под которым стартует ФЗ. Не включены ли у него RLS? |
|||
7
Александр056
05.05.16
✎
08:30
|
(6) документы как правило до 10 строк, база 120 ГБ, фоновое в консоли показывает DefUser, пробовал под собой с полными правами та же котовасия
|
|||
8
4St
05.05.16
✎
08:35
|
(7) Попробуй нарезать этот запрос на отдельные части, чтобы понять, какая именно из них тормозит. Почти наверняка это будет какой-то один запрос из пакета. Может, после этого удастся что-то понять.
|
|||
9
Александр056
05.05.16
✎
08:56
|
(8) вопрос, к примеру я запущу ТИИ с галкой расчет итогов, пройдет время и мне придется прервать эту процедуру, не закончившись, в след раз когда запущу она продолжит рассчитывать? или заново начнет?
|
|||
10
ИсчадиеADO
05.05.16
✎
09:00
|
Номенклатура В
(ВЫБРАТЬ СписанныеТовары.Номенклатура ИЗ СписанныеТовары КАК СписанныеТовары) заменить на (Организация, Номенклатура, Характеристика) В (ВЫБРАТЬ РАЗЛИЧНЫЕ СписанныеТовары.Организацияя, СписанныеТовары.Номенклатура, СписанныеТовары.Характеристика ИЗ СписанныеТовары КАК СписанныеТовары) |
|||
11
4St
05.05.16
✎
09:03
|
(9) Увы, не знаю, как там на новых платформах. Скорей всего, начнет заново.
|
|||
12
Александр056
05.05.16
✎
09:13
|
(10) ошибок кучка...
|
|||
13
Vladal
05.05.16
✎
11:12
|
(12) Ну суть в том, что в выборке фильтра исключить повторяющиеся.
|
|||
14
4St
05.05.16
✎
11:29
|
Если я правильно понял, то вопрос ТС таков:
"Почему скорость выполнения запроса в фоновом задании на порядок ниже, чем в толстом клиенте". |
|||
15
4St
05.05.16
✎
11:31
|
(0) >> параметры теже что и в процессе отладки все проверил
Точно те же? Посмотри еще раз внимательно на "&Дат". Что там - Дата или МоментВремени? Второе в консоли не смоделируешь, а на скорость теоретически может влиять. Глянь код, который взводит этот параметр. |
|||
16
Nuobu
05.05.16
✎
11:55
|
(15) В консоли не смоделируешь, а в запроснике - можно.
|
|||
17
boss1c
05.05.16
✎
12:21
|
(0) Когда остатки по партиям получаешь, добавь условие в Вирт таблицу не только по орг. и ном., но и по характеристике. С индексами разберись, не все они нужны, только по полям по которым соединяешь таблицы
|
|||
18
sash-ml
05.05.16
✎
12:30
|
(10) не нужно так делать
...Номенклатура В (ВЫБРАТЬ .... СписанныеТовары КАК СписанныеТовары)... В разы быстрее получить ВСЕ остатки и сделать внутреннее соединение с твоими СписанныеТовары |
|||
19
Franchiser
гуру
05.05.16
✎
12:32
|
Попробуй УстановитьПривилегированныйРежим(Истина)
|
|||
20
vde69
05.05.16
✎
12:33
|
статистику обновите на скуле...
|
|||
21
Franchiser
гуру
05.05.16
✎
12:34
|
смотри профайлер чем отличается запрос под фоновым заданием от запроса в консоли
|
|||
22
vde69
05.05.16
✎
12:35
|
а если серьезно - то в сабже классические грабли...
при создании временной таблицы все поля составного типа нужно привести к определенности оператором "выразить", тогда все будет летать... |
|||
23
rphosts
05.05.16
✎
15:09
|
(2) если будешь только спрашивать вместо сделать и выполнить замером производительности - ничего не изменится
|
|||
24
ViSo76
05.05.16
✎
16:00
|
(0) 1. Если предположить невероятное что на регистрах есть RLS и для регламентного пользователя действуют.
2. Что в параметре &Дат? Могут остатки расчитываться на предыдущий период, не оперативные так сказать, а это может быть очень долгим процессом. 3. Индексировать СписанныеТовары не нужно это основаная таблица. 4. Непонятно для чего это нужно ПартииТоваровНаСкладах.ДокументОприходования.Представление |
|||
25
vde69
05.05.16
✎
16:10
|
(24) все гораздо проще - ДокументСписания - составной тип...
соответственно все это джойнится с таблицами метаданных совершенно диким способом.... что - бы этого избежать читаем (22) ну нельзя во временную таблицу пихать составные типы.... |
|||
26
ptiz
05.05.16
✎
16:16
|
(22) А что делать, когда партией могут быть документы разных типов?
|
|||
27
ViSo76
05.05.16
✎
16:18
|
(25) Где ты в запросе увидел ДокументСписания??? Я конечно бегло смотрел, но такого не увидел. Приведи кусок запроса.
|
|||
28
4St
05.05.16
✎
16:19
|
(27)
ВЫБРАТЬ СписанныеТовары.НомерСтрокиДокумента КАК НомерСтрокиДокумента, ПартииТоваровНаСкладах.ДокументОприходования КАК ДокументОприходования, ПартииТоваровНаСкладах.ДокументОприходования.Представление КАК ДокументОприходованияПредставление, ДокументОприходованияПредставление, возможно, лишний. |
|||
29
Franchiser
гуру
05.05.16
✎
16:20
|
(26) 1С рекомендует делать "Объединить ВСЕ" в этом случае, Где-то была статья на ИТС
|
|||
30
ViSo76
05.05.16
✎
16:27
|
(26) Сразу скажу чтобы все тут копья не ломали...
Никаких левых соединений нет. (29) Я указывал в (24), но соединений нет, так как Представление не хранится в других таблицах, а скорее всего обрабатывается на сервере предприятии после запроса ( так же как и ИТОГИ ) и означает всего лишь вернуть текстовое представление ссылки. |
|||
31
Александр056
11.05.16
✎
13:30
|
(20) как ?
|
|||
32
Александр056
11.05.16
✎
13:31
|
причем запрос выполняется то быстро то медленно, на реализациях, документы примерно одинаковы по количеству строк, нет принципиальной разницы, все в 1 периоде, вв 1 день даже!
|
|||
33
mehfk
11.05.16
✎
13:32
|
||||
34
Александр056
11.05.16
✎
13:32
|
(33) админ ответил, 2 раза в неделю статистика обновляется
|
|||
35
mehfk
11.05.16
✎
13:36
|
Надо чаще, например раз-два в сутки. По некоторым регистрам и раз в 10-15 минут можно сделать.
|
|||
36
ДенисЧ
11.05.16
✎
13:39
|
(34) статистика на нагруженных базах должна обновляться не реже 3х часов
|
|||
37
Александр056
11.05.16
✎
13:41
|
вопрос, может ли повлият пересчет итогов, который выполняется из конфигуратора ТИИ? и если я выставлю, время окончания скажем через 5 часов, потом запущу снова, начнется заново? или продолжит рассчитывать?
|
|||
38
Александр056
11.05.16
✎
13:42
|
(36) так мы тогда вообще повиснем....она у нас собирается по 4-5 часов(со слов админа)
|
|||
39
ДенисЧ
11.05.16
✎
13:42
|
(38) Админа уволить.
|
|||
40
4St
11.05.16
✎
13:43
|
(34) а дефрагментация индексов не раз в месяц, надеюсь?
|
|||
41
Александр056
11.05.16
✎
13:44
|
(40) раз в неделю
|
|||
42
Александр056
11.05.16
✎
13:45
|
просто запрос типовой думал что 1с пишут самый оптимальный код, а по итогам непонятно...
|
|||
43
Александр056
11.05.16
✎
13:47
|
итоги всмысле ТИИ
|
|||
44
4St
11.05.16
✎
13:47
|
(42) дык там же обычные люди работают. И ляпов хватает. Кстати, очень плохая идея - учиться программированию на 1С, глядя в код старых типовых конфигураций.
|
|||
45
4St
11.05.16
✎
13:47
|
(41) ппц, поддерживаю (39)
|
|||
46
mehfk
11.05.16
✎
13:50
|
(44) Код старых типовых конфигураций будет получше кода новых типовых конфигураций.
|
|||
47
4St
11.05.16
✎
13:53
|
(46) В старых типовых - привычка писать портянки на 10 экранов и мешать интерфейсные обработчики с основной логикой.
В новых - бардак с делением клиент/сервер. Это вечно. |
|||
48
mehfk
11.05.16
✎
13:57
|
(47) "мешать интерфейсные обработчики с основной логикой" - в новых типовых этого тоже достаточно.
|
|||
49
Александр056
11.05.16
✎
14:31
|
попробую кип поставить, мб там что увижу...есть у кого опыт работы с ним?
|
|||
50
Александр056
11.05.16
✎
14:32
|
всмысле действитель полезная вещь и стоит того? или больше разговоров?)
|
|||
51
Feanor
11.05.16
✎
14:37
|
(49) не нужен в твоем случае КИП, достаточно профайлера MS SQL
|
|||
52
ViSo76
11.05.16
✎
14:37
|
Может данная обработка пересекается с перепроведением каким нибудь, там где затрагиваются итоги ( пересчёт ) да за счёт блокировок всё висит... хотя по идее из-за этого регламент просто должен по таймауту отваливаться...
|
|||
53
Александр056
11.05.16
✎
14:41
|
(52) да она перепроводит докумен только по партиям,но при проведении документа много таблиц же блокируется, т.е. при одновременном проведении всего что двигает партии, взаиморасчеты и прочее, что пересекается с регистрами РТУ
|
|||
54
ViSo76
11.05.16
✎
14:50
|
(53) Я имею ввиду параллельно ничего не перепроводится? В фоновом или в других регламентах, не пересчитываются ли итоги во время получения остатка - РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Остатки
|
|||
55
4St
11.05.16
✎
14:56
|
(53) и все-таки, что в параметре "&Дат" - Дата или МоментВремени?
Спрашиваю вот почему: http://catalog.mista.ru/public/362406/ |
|||
56
Александр056
11.05.16
✎
15:12
|
(55) спасибо за статью, щас не открыто все, чуть другим занят, потом посмотрю и обязательно отпишусь
|
|||
57
Александр056
11.05.16
✎
20:02
|
(55) 26.03.2016 1:00:00; Реализация товаров и услуг ОМ000083089 от 26.03.2016 1:00:00
|
|||
58
Александр056
11.05.16
✎
20:22
|
(55) прочитал, и что ? еще 1 запрос на проверку порядка документа в пределах секунды будет быстрее чем просто ммент времени???
|
|||
59
4St
11.05.16
✎
20:30
|
(57) получается, в консоли ты выполнял запрос не с тем параметром. Смоделируй выполнение запроса с тем же параметром, который подставляется в боевых условиях, т.е. МоментВремени. И напиши о результатах.
Ну и как тут уже говорили, обновление статистики дважды в неделю и дефрагментация индексов раз в неделю - это отчаянно мало. |
|||
60
Александр056
11.05.16
✎
21:51
|
(59) как засунуть туда момент времени?
|
|||
61
Александр056
11.05.16
✎
21:59
|
все уже нашел "запросник"
|
|||
62
Александр056
11.05.16
✎
22:03
|
не понял почему но запросник ничего не выдал в результат при тех же переметрах, но! запрос в консоли выполняется что с датой что с моментом времени около 10 сек, думаю для консоли это очень много
|
|||
63
ViSo76
11.05.16
✎
22:08
|
(61) Чудес не бывает... этот запрос выполняется 1 раз? Выложи скриншот профайлера
|
|||
64
Александр056
11.05.16
✎
22:09
|
запросника?
|
|||
65
ViSo76
11.05.16
✎
22:14
|
Если ты запустишь из обработки регламент, с включённым замером производительности и после отработки отключив замер можно увидеть что тормозит и количество обращений к данному куску кода / запроса
|
|||
66
Александр056
11.05.16
✎
22:18
|
(65) там будет 99% на строке
результатзапроса = запрос.выполнить().выбрать(ОбходРезультатаЗапросаПоГруппировкам) |
|||
67
Александр056
11.05.16
✎
22:19
|
(65) 1 обращение
|
|||
68
Pavlov_vu
11.05.16
✎
22:22
|
(55) +1
думаю причина в моменте времени |
|||
69
Александр056
11.05.16
✎
22:23
|
(68) блин, но там дата документа дата + 01:00:00, и докуентов с такой датой оч много, сцыкатно убирать момент времени, и вместо него ставить дату просто
|
|||
70
ViSo76
11.05.16
✎
22:23
|
(66) А сколько там данных выбирается, строк?
|
|||
71
ViSo76
11.05.16
✎
22:24
|
(68) Я сомневаюсь что в моменте дело
|
|||
72
Pavlov_vu
11.05.16
✎
22:33
|
(69) ...дата документа дата + 01:00:00, и докуентов с такой датой оч много - почему много ?
|
|||
73
Александр056
11.05.16
✎
22:38
|
(72) потому что специфика такая, много чего автоматизировано, есть производство, есть продажи, много продаж, и когда автомато делаются реализации то ставится такая дата, все подвязано,Ю долго рассказывать(
|
|||
74
Александр056
11.05.16
✎
22:40
|
(70) 25
|
|||
75
Александр056
11.05.16
✎
22:41
|
сейчас в базе время когда никто не работает...проводится в момент....
|
|||
76
Александр056
11.05.16
✎
22:44
|
хотя время выполнения запроса в консоли не изменилось...время ночь голова не соображает, завтра продолжу.
|
|||
77
Pavlov_vu
11.05.16
✎
22:47
|
(73) ...когда автомато делаются реализации то ставится такая дата... - попросите автомат добавлять секунды
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |