Имя: Пароль:
1C
 
Откуда вызывается запрос
,
0 1nvertex
 
03.05.18
15:54
Сервер периодически начинает тормозить.
Вижу в SQL Profiler странные вызовы вроде того что ниже - количество чтений (Reads) больше миллиона.
Нашел Document404 - это счет на оплату покупателя, но как найти откуда сам вызов запроса?

____________
exec sp_executesql
SELECT TOP 25
T1._IDRRef,
T1._Marked,
T1._Number,
T1._Date_Time,
T1._Posted,
T1._Fld11855RRef,
T1._Fld11858RRef,
T1._Fld11859RRef,
T1._Fld11864,
T1._Fld11865RRef,
T1._Fld11869,
CASE WHEN CASE WHEN T2._Fld22142_TYPE IS NULL THEN 0x08 ELSE T2._Fld22142_TYPE END = 0x08 AND CASE WHEN T2._Fld22142_TYPE IS NULL THEN 0x000002DD ELSE T2._Fld22142_RTRef END = 0x000002DD THEN CASE WHEN T2._Fld22142_TYPE IS NULL THEN P1 ELSE T2._Fld22142_RRRef END END,
CASE WHEN CASE WHEN T2._Fld27894_TYPE IS NULL THEN 0x08 ELSE T2._Fld27894_TYPE END = 0x08 AND CASE WHEN T2._Fld27894_TYPE IS NULL THEN 0x000068D1 ELSE T2._Fld27894_RTRef END = 0x000068D1 THEN CASE WHEN T2._Fld27894_TYPE IS NULL THEN @P2 ELSE T2._Fld27894_RRRef END END
FROM dbo._Document404 T1
LEFT OUTER JOIN dbo._InfoRg22139 T2
ON (((T1._Fld11855RRef = T2._Fld22140RRef) AND (0x08 = T2._Fld22141_TYPE AND 0x00000194 = T2._Fld22141_RTRef AND T1._IDRRef = T2._Fld22141_RRRef))) AND (T2._Fld872 = @P3)
LEFT OUTER JOIN dbo._Reference35 T3
ON (T1._Fld11865RRef = T3._IDRRef) AND (T3._Fld872 = @P4)
LEFT OUTER JOIN dbo._Reference63 T4
ON (T1._Fld11859RRef = T4._IDRRef) AND (T4._Fld872 = @P5)
LEFT OUTER JOIN dbo._Reference90 T5
ON (T1._Fld11858RRef = T5._IDRRef) AND (T5._Fld872 = @P6)
LEFT OUTER JOIN dbo._Reference116 T6
ON (T1._Fld11855RRef = T6._IDRRef) AND (T6._Fld872 = @P7)
WHERE ((T1._Fld872 = @P8)) AND ((((((((((T3._Description LIKE @P9 ESCAPE ''/'') OR (T4._Description LIKE P10 ESCAPE ''/'')) OR (T1._Fld11864 LIKE P11 ESCAPE ''/'')) OR (T5._Description LIKE P12 ESCAPE ''/'')) OR (T1._Number LIKE P13 ESCAPE ''/''))) OR (T6._Description LIKE P14 ESCAPE ''/''))) OR ((T1._Fld11869 >= P15) AND (T1._Fld11869 < P16))))
ORDER BY (T1._Number) DESC, (T1._IDRRef) DESC',N'P1 varbinary(16),@P2 varbinary(16),@P3 numeric(10),@P4 numeric(10),@P5 numeric(10),@P6 numeric(10),@P7 numeric(10),@P8 numeric(10),@P9 nvarchar(4000),P10 nvarchar(4000),P11 nvarchar(4000),P12 nvarchar(4000),P13 nvarchar(4000),P14 nvarchar(4000),P15 numeric(10),P16 numeric(10)',0x9FD5C4D9C70C6C184B8C4C9320CF82A8,0x8CB10ED60875165A4F0A4DB47004F61A,0,0,0,0,0,0,N'%2657%',N'%2657%',N'%2657%',N'%2657%',N'%2657%',N'%2657%',2657,2658    1CV83 Server
____________
Как понять
1 RomanYS
 
03.05.18
15:58
Конфигурация какая, формы УФ?
2 Serg_1960
 
03.05.18
16:04
(имхо) Если "Сервер периодически начинает тормозить" - то это, скорее всего, искать в фоновых заданиях - я бы посмотрел в сторону регламентных заданий.
3 1nvertex
 
03.05.18
16:04
(1)БП3, допиленная
4 1nvertex
 
03.05.18
16:06
(2) Да, первым делом отключил все фоновые, легче не стало
5 lapinio
 
03.05.18
16:07
Настрой журнал регистрации. Вставь кусок запроса. Потом посмотри контекст. И поймешь откуда вызывается запрос.
6 lapinio
 
03.05.18
16:07
DBMSQL like Query etc
7 lapinio
 
03.05.18
16:08
Пример можно найти на итс
8 lapinio
 
03.05.18
16:08
Как настроить журнал регистрации
9 lapinio
 
03.05.18
16:08
А так не поймешь контекст запроса
10 D3O
 
03.05.18
16:08
(4) значит ищи по модулям, по имени документа. еще должны быть в этом же запросе какой-то регистр сведений и 3 справочника
вот как найдешь запрос - поймешь, откуда его дергает )
11 RomanYS
 
03.05.18
16:09
А динамический список не может подобное вызывать?
12 D3O
 
03.05.18
16:10
(11) вот, кстати - да. в глобальный поиск тогда еще включить элементы форм
13 xXeNoNx
 
03.05.18
16:10
(0) вангую.., динамический список
14 lapinio
 
03.05.18
16:10
Технологический журнал. опечатался
15 lapinio
 
03.05.18
16:11
Настрой технологический журнал
16 D3O
 
03.05.18
16:11
(14) не нужен тут журнал. больше гемороя, если не знаешь как настраивать.
просто глобальный поиск
17 xXeNoNx
 
03.05.18
16:14
"SELECT TOP 25" что тут непонятного...?
(16) "Глобальный поиск" - в чем, по какому контексту?
18 Serg_1960
 
03.05.18
16:16
(17) Если автор ничего не напутал, то "Документ.СчетНаОплатуПокупателю КАК Т1"
19 xXeNoNx
 
03.05.18
16:17
(18) И..? что там искать, если нет контекста?
20 D3O
 
03.05.18
16:18
(18) не. не будет в коде такого. это при состряпывании скульного запроса платформа такие штуки сама подпихивает.
21 Serg_1960
 
03.05.18
16:21
(19) Тьфу, глобальный поиск не по технологическому журналу, естественно, а в конфигураторе по конфигурации.
22 xXeNoNx
 
03.05.18
16:21
что бы понять что тормозит систему, настраиваем ТЖ, со свойством dbmssql с параметром Durationus(если 8.3) => 20000000, например, и отслеживаем все события.., если ничего в ТЖ не будет, уменьшаем данный параметр.
23 xXeNoNx
 
03.05.18
16:22
(21) а что конкретно в глобальном поиске искать, например?
24 youalex
 
03.05.18
16:22
escape - это скорее всего, "СПЕЦСИМВОЛ".  Можно по нему попробовать поискать, если запрос не динамически, и если в конфе, а не внешник.
25 Вафель
 
03.05.18
16:23
Это автообновление динамического списка
26 xXeNoNx
 
03.05.18
16:23
+(22) если база конечно ms sql
27 Вафель
 
03.05.18
16:24
осталось только определить пользователя
28 lapinio
 
03.05.18
16:25
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">;
<dump create="false"/>
<plansql/>
<log location="C:\v82\log" history="168">
  <event>
   <eq property="name" value="dbmssql"/>
   <like property="plansqltext" value="Select tt"/>
  </event>
  <property name="all"/>
</log>
</config>
29 lapinio
 
03.05.18
16:25
Как пример настройки тж
30 lapinio
 
03.05.18
16:25
Вместо select свой запрос ставь и найдешь контектс
31 lapinio
 
03.05.18
16:26
А так гадать где этот запрос вызывается
32 youalex
 
03.05.18
16:26
вот на это походит, навскидку:
ОбработкаПолученияДанныхВыбора()  в менеджере дока
33 lapinio
 
03.05.18
16:27
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">;
<dump create="false"/>
<plansql/>
<log location="C:\v82\log" history="168">
  <event>
   <eq property="name" value="dbmssql"/>
   <like property="sql" value="Select top 25"/>
  </event>
  <property name="all"/>
</log>
</config>
34 lapinio
 
03.05.18
16:27
Более правильный вариант. Предыдущий вариант. По плану запроса ищет
35 Serg_1960
 
03.05.18
16:29
(23) А я, кстати, не спорю насчёт версии динамического списка. Просто глобальный поиск быстрее, чем ТЖ :) одно из двух: или запрос будет найден, или подтвердится версия генерирования запроса платформой.
36 xXeNoNx
 
03.05.18
16:29
(30) плохая идея привязываться к названию таблиц.., они могут быть разными.
Также плохая идея "Select top 25"
Все (или почти все) динамические списки будут сюда попадать..
37 Вафель
 
03.05.18
16:30
(35) Так дс от настроек пользователя зависит. Ты умеешь поиск по таким настройкам?
38 xXeNoNx
 
03.05.18
16:30
(35) отлично, я немного о другом, по какой подстроке будет что-то найдено?
39 Serg_1960
 
03.05.18
16:31
(38) А что (18) не катит?
40 xXeNoNx
 
03.05.18
16:33
(39) Потому что (20).
Этот запрос из профайлера, запрос сформированный платформой, не 1с-ником
41 Serg_1960
 
03.05.18
16:50
(40)  Ладно, не буду упираться...
:) Но, насчет "не 1С-ника" - это не 100% :)

ВЫБРАТЬ ПЕРВЫЕ 25
Т1.Ссылка,
Т1.ПометкаУдаления,
Т1.Номер,
Т1.Дата,
...
ИЗ
Документ.СчетНаОплатуПокупателю КАК Т1
42 Franchiser
 
гуру
03.05.18
17:17
это ДС
43 1nvertex
 
03.05.18
17:21
Поиск по конфигурации "ВЫБРАТЬ ПЕРВЫЕ 25" ничего не дал. Настроил ТЖ по (33) lapinio, пусто. Подумал, может фильтр чувствителен к регистру, поменял на value="SELECT TOP 25". Логи замечательно создаются, но они пустые.
Сделал обработку с запросом "ВЫБРАТЬ ПЕРВЫЕ 25" в ТЖ все равно пусто.
44 D3O
 
03.05.18
17:21
(38) например "ВЫБРАТЬ ПЕРВЫЕ 25"
или "Документ.СчетНаОплатуПокупателю КАК"
или разобраться что там за регистр и какие реквизиты документа и регистра и тогда по условию связи
"СчетНаОплатуПокупателю.<ИмяРеквизита> = <ИмяРегистра>.<ИмяРеквизитаРегистра>"
45 D3O
 
03.05.18
17:23
(43) вот с предыдущим глобальным поиском по модулям и элементам форм
46 Franchiser
 
гуру
03.05.18
17:27
Пользователь стрелочками листает динамический список, например, журнал банковских документов
47 D3O
 
03.05.18
17:27
а что за регистр _InfoRg22139 ?
48 Вафель
 
03.05.18
17:28
(47) доп свойства наверняка
49 D3O
 
03.05.18
17:28
возможно в запросе он как СрезПоследних шурует, а ограничений никаких не задается. Вот и тормоза
50 xXeNoNx
 
03.05.18
17:29
(44) "Документ.СчетНаОплатуПокупателю КАК" - а если алиас не задан?
"СчетНаОплатуПокупателю.<ИмяРеквизита> = <ИмяРегистра>.<ИмяРеквизитаРегистра>" из-за алиасов может не совпадать!
"ВЫБРАТЬ ПЕРВЫЕ 25" - много видели отборов "ПЕРВЫЕ 25"? (я только в тестовых запросах использую)
51 Franchiser
 
гуру
03.05.18
17:31
(50) в профайлере много видел
52 xXeNoNx
 
03.05.18
17:31
(51) Тут в контексте поиска по конфигурации...
53 xXeNoNx
 
03.05.18
17:32
(51) вопрос в том взяли пост (0) и говорят: а почему бы не поискать по (44) глобальным поиском в конфигурации
54 Franchiser
 
гуру
03.05.18
17:33
(47) Ну так посмотри:
select top 100 * from dbo._InfoRg22139
Еще можно соответствие структуры таблиц sql получить из 1с.
55 Cyberhawk
 
03.05.18
17:34
Это не только ДС может быть, но и Выбрать() или Следующий()
56 Cyberhawk
 
03.05.18
17:34
(Я про "SELECT TOP 25")
57 D3O
 
03.05.18
17:34
(54) а, что в какой-то версии ПолучитьСтруктуруХраненияБазыДанных уже не работает? )))
58 Franchiser
 
гуру
03.05.18
17:35
"Еще можно соответствие структуры таблиц sql получить из 1с." = ПолучитьСтруктуруХраненияБазыДанных()
Есть возможно (системные) таблицы, который этот метод не показывает
59 D3O
 
03.05.18
17:36
(58) это не тот случай
60 xXeNoNx
 
03.05.18
17:39
(58) они по сути не нужны, но о них нужно помнить
61 Franchiser
 
гуру
03.05.18
17:39
Для каждого регистра сведений создается таблица движений (_InfoRg<n>) с полями:

    _Period - момент времени движения. Поле присутствует, если значение свойства "Периодичность" отлично от "Непериодический";
    _Recorder<suff> - ссылка на регистратор. Поле присутствует, если значением свойства "Режим записи" является "Подчинение регистратору";
    _LineNo - номер движения по данному регистратору. Поле присутствует, если значением свойства "Режим записи" является "Подчинение регистратору";
    _Active - движение активно (участвует в вычислении среза последних). Поле присутствует, если значением свойства "Режим записи" является "Подчинение регистратору";
    _Fld<n><suff> - измерение, ресурс или реквизит (для каждого измерения, каждого ресурса и каждого реквизита);
    _Fld<n> - общие реквизиты.

Для каждого периодического регистра сведений, с включенным признаком РазрешитьИтогиСрезПоследних создается таблица срез последних (_InfoRgSL<n>) с полями:

    _Period - момент времени движения;
    _Recorder<suff> - ссылка на регистратор. Поле присутствует, если значением свойства "Режим записи" является "Подчинение регистратору";
    _Fld<n><suff> - измерение, ресурс или реквизит (для каждого измерения, каждого ресурса и каждого реквизита).

Для каждого периодического регистра сведений, с включенным признаком РазрешитьИтогиСрезПервых создается таблица срез последних (_InfoRgSF<n>) с полями:

    _Period - момент времени движения;
    _Recorder<suff> - ссылка на регистратор. Поле присутствует, если значением свойства "Режим записи" является "Подчинение регистратору";
    _Fld<n><suff> - измерение, ресурс или реквизит (для каждого измерения, каждого ресурса и каждого реквизита).

Если регистр сведений участвует хотя бы в одном плане обмена, то создается таблица регистрации изменений (_InfoRgChangeRec<n>). Для регистра, у которого свойство Режим записи имеет значение Независимый таблица регистрации изменений имеет следующие поля:

    _Node<suff> - ссылка на узел плана обмена;
    _MessageNo - номер сообщения обмена данными, в которое было выгружено это изменение или NULL, если оно еще не было выгружено;
    _Period - момент времени движения. Поле присутствует, если значение свойства регистра "Периодичность" отлично от "Непериодический" и установлен флаг "Основной отбор по периоду";
    _Fld<n><suff> - измерение регистра, входящее в основной отбор (для каждого изменения с установленным флагом "Основной отбор");
    _Fld<n> - общие реквизиты.

Если значением свойства Режим записи регистра является Подчинение регистратору, то поля таблицы регистрации изменений такие же, какие у таблицы регистрации изменений последовательности.
62 g00d
 
03.05.18
17:44
ПолучитьСтруктуруХраненияБазыДанных()
а потом глобальные поиск по формам с запросов в этом документа и регламентные задания.
63 1nvertex
 
03.05.18
17:48
"ВЫБРАТЬ ПЕРВЫЕ 25" в тексте конфигурации нет.

_InfoRg22139 это рег.сведений "СтатусыДокументов". Справочники это Валюты, Договора, Контрагенты, Организации.
Нашел всего 43 запроса "Документ.СчетНаОплатуПокупателю КАК", просмотрел все, но подходящего не нашел.
64 Franchiser
 
гуру
03.05.18
17:52
(63) если запроса нет то это динамический список с какими то фильтрами. частое упоминание "%2657%" говорит о том что кто-то пытается найти номер 2657.
65 Franchiser
 
гуру
03.05.18
17:56
что такое _Fld872 ?
66 Franchiser
 
гуру
03.05.18
17:58
Единственное общее поле которое есть во всех тобой указанных справочниках это Организация, кроме спр. Валюты. Но причем тут тогда спр. Валюты?
67 xXeNoNx
 
03.05.18
18:04
(63) а я говорил....
68 Franchiser
 
гуру
03.05.18
18:05
P1 0x9FD5C4D9C70C6C184B8C4C9320CF82A8,
P2 0x8CB10ED60875165A4F0A4DB47004F61A,
P3 0,
P4 0,
P5 0,
P6 0,
P7 0,
P8 0,
P9 N'%2657%',
P10 N'%2657%',
P11 N'%2657%',
P12 N'%2657%',
P13 N'%2657%',
P14 N'%2657%',
P15 2657,
P16 2658
69 1nvertex
 
03.05.18
18:05
Fld872 - ОбщийРеквизит.ОбластьДанныхОсновныеДанные
70 Franchiser
 
гуру
03.05.18
18:09
Это условие "(T1._Fld11869 >= P15) AND (T1._Fld11869 < P16)" говорит о том что считывается порция данных по 2657
71 1nvertex
 
03.05.18
18:09
(66) Вот здесь
...
LEFT OUTER JOIN dbo._Reference35 T3
ON (T1._Fld11865RRef = T3._IDRRef) AND (T3._Fld872 = @P4)
...
72 1nvertex
 
03.05.18
18:12
<log location="C:\1C\1cv8\logs\LongTop25" history="24">
       <event>
         <eq property="name" value="dbmssql"/>
         <like property="sql" value="SELECT TOP 25"/>
       </event>
       <property name="All"/>
   </log>
.
лог пустой
73 Franchiser
 
гуру
03.05.18
18:13
(71) понятно @P4 по @P7 = 0, это видимо что то с разделением данных связанное
74 1nvertex
 
03.05.18
18:18
Еще более странно, что вот этот лог тоже пустой
   <log location="C:\1C\1cv8\logs\Long1" history="24">
       <event>
         <eq property="Name" value=""/>
         <ge property="Duration" value="1000"/>
       </event>
       <property name="All"/>
   </log>
75 Franchiser
 
гуру
03.05.18
18:18
Нужно создать тестовую базу, настроить на нее профайлер и скроллить в ней журналы по этому документу, пытаться получить такой же запрос. Только что это даст, ну определишь ты что запрос в динамическом списке, что дальше?
76 VS-1976
 
03.05.18
19:00
Это скорее всего список документов. Смотри соответствие объектов 2с и таблиц базы через обработку
77 vs84
 
03.05.18
19:17
(0) это динсписок с основной таблицей Документ.СчетНаОплатуПокупателю. может быть без явно написанного текста запроса (скорее всего).
отбор вида
"WHERE ((T1._Fld872 = @P8)) AND ((((((((((T3._Description LIKE @P9 ESCAPE ''/'') OR (T4._Description LIKE P10 ESCAPE ''/'')) OR (T1._Fld11864 LIKE P11 ESCAPE ''/'')) OR (T5._Description LIKE P12 ESCAPE ''/'')) OR (T1._Number LIKE P13 ESCAPE ''/''))) OR (T6._Description LIKE P14 ESCAPE ''/''))) OR ((T1._Fld11869 >= P15) AND (T1._Fld11869 < P16)))) "

генерирует платформа (если не ошибаюсь), когда вводишь строку поиска в поле поиска (по ктрл - Ф) - это поле поиска, которое ищет по всем.
ESCAPE ''/'' - не имеет отношение к конструкции Спецсимвол, это прлатформа сама добавляет.

(70)"Это условие "(T1._Fld11869 >= P15) AND (T1._Fld11869 < P16)" говорит о том что считывается порция данных по 2657"
Нет, это говорит о том, что платформа знает что \то поле числовое и поэтому при вводе в поле поиска 2657 она ищет все, у которых целая часть равна 2657.
78 Мыш
 
03.05.18
20:26
(77) Скорее всего именно произвольный запрос. Левые соединения и множество выбор_когда намекают.

(0) Открой форму списка документа и посмотри, что у динамического списка в свойствах.
79 systemstopper
 
03.05.18
20:32
А с чего все вдруг решили что сервер начинает тормозить из-за запросов в (0)?
80 Мыш
 
03.05.18
20:38
(79) Опыт. Были прецеденты в моей практике.
81 systemstopper
 
03.05.18
20:41
(80) Настоящие 1с-ники вместо того чтобы заюзать DMV, предпочтут положиться на свой однобокий кривой опыт)
82 Мыш
 
03.05.18
20:45
(80) Настоящие 1С-ники вместо того чтобы первым делом проверить наиболее вероятные причины, предпочтут очередной раз пойти тернистым путем изысканий.
83 Мыш
 
03.05.18
20:45
(82) к (81) )
84 Diman000
 
03.05.18
20:47
(0)
Ну если речь именно о том "откуда вызывается запрос", то скорее всего это динсписок, как тут уже сказали.

Но анализ источника тормозов начинается не с профайлера.

В чем проявляются тормоза? У всех все медленно работает?
Или какие-нибудь отчеты, другие отдельные операции или формы?

Что говорит консоль сервера приложений (время вызова текущее), обычно по ней можно понять наиболее грустных пользователей и напрямую выяснить с каким функционалом они работают.

Если СУБД и сервер приложений на разных машинах, то что у них с загрузкой процессора и памяти? Если на одной, то что по у их отдельных процессов.
85 systemstopper
 
03.05.18
20:51
(82) Что тернистого в том чтобы вызвать несколько DMV-шек, найти объекты метаданных, настроить по ним фильтр ТЖ и получить контекст? Вместо этого проще полдня методом тыка искать причину которая может быть вообще в другом месте?
86 Мыш
 
03.05.18
20:56
(85) Полдня на посмотреть один запрос - это сильно )
87 systemstopper
 
03.05.18
21:00
(86) в смысле? я имею в виду что чуваку тут уже под сотню советов (основываясь на своем мега-опыте) накидали как проверить методом тыка а воз и ныне там...
88 systemstopper
 
03.05.18
21:10
Методика здесь
https://its.1c.ru/db/metod8dev#content:5813:hdoc

там про IO но принцип тот же и для CPU
89 Tateossian
 
03.05.18
22:03
SELECT TOP 25 - это скролл по динамическому списку, в форме какой-то.
90 zwei
 
03.05.18
22:27
(89) В котором наложен отбор по наименование ревизита содержит 2657. Впрлне достаточно чтобы уже сообразить.
91 xXeNoNx
 
04.05.18
00:50
а чем метод (85) отличается от (82), если, например, прогибается винт или сетка, при чем не сиквелом - читаем по губам...
Если приводите свои не "криворукий опыт", то приводите до конца, а то он кажется не менее криворуким. На одних dmv не уедешь далеко
92 cons74
 
04.05.18
07:01
(74) ничего странного, ты же в
<eq property="Name" value=""/>
указал "где имя события =""" - т.е. система будет записывать только события с пустым именем. И в отбор  ничего не попадает.

Обычно для запросов пишется примерно так:
<event>
    <eq property="Name" value="SDBL"/>
    <ge property="Duration" value="80000"/>
</event>
<event>
    <eq property="Name" value="DBMSSQL"/>
    <ge property="Duration" value="80000"/>
</event>

Автор, тебе уже сто раз написали: это запрос дин.списка, т.е. когда пользователь глядит список документов, причем пользователь вывел еще кучу полей/настроил отборы дикие.

Т.к. опыта у тебя нет в ТЖ - ставь мониторинг долгих запросов Гилева и не парься. 15 минут твоего времени и через час полная картина -кто когда и как часто вызывал этот запрос.
93 xXeNoNx
 
04.05.18
07:35
(92) ему наверное уже не надо..., воспользовался "глобальным поиском")