<?xml version="1.0"?>
<ns:config xmlns:ns="http://v8.1c.ru/v8/tech-log">
<ns:log location="F:\LOGS\P_ERPtest_ForCup\all" history="4">
<ns:event>
<ns:eq property="Name" value="CALL"/>
<ns:eq property="p:processName" value="P_ERP_TEST"/>
<ns:ge property="Duration" value="50000"/>
</ns:event>
<ns:event>
<ns:eq property="Name" value="TLOCK"/>
<ns:eq property="p:processName" value="P_ERP_TEST"/>
</ns:event>
<ns:event>
<ns:eq property="Name" value="TDEADLOCK"/>
<ns:eq property="p:processName" value="P_ERP_TEST"/>
</ns:event>
<ns:event>
<ns:eq property="Name" value="DBMSSQL"/>
<ns:eq property="p:processName" value="P_ERP_TEST"/>
</ns:event>
<ns:event>
<ns:eq property="Name" value="SDBL"/>
<ns:eq property="p:processName" value="P_ERP_TEST"/>
</ns:event>
<ns:property name="all"/>
</ns:log>
<ns:plansql/>
<ns:dbmslocks/>
</ns:config>
После применения убедимся, что замеры записываются в регистр. Обратите внимание на большую разницу во времени выполнения операции под полными и ограниченными правами.
Попробуем разобраться, почему запрос под пользователем с ограниченными правами выполняется в 10 и более раз медленнее.
Кликнем два раза на строке «Выполнение запросов» для открытия формы анализа выполнения запросов. Далее кликаем дважды на сам запрос.
В форме выполнения запроса на первой закладке отображается контекст выполнения. Он будет полезен нам для определения, где ставить точку останова в конфигураторе, чтобы получить исходный текст запроса.
На второй закладке отображается запрос SQL, а также запрос SQL в терминах метаданных 1С. Можно увидеть, как преобразовался исходный запрос 1С в запрос SQL. В нашем случае добавилось огромное количество соединений к метаданным, отвечающих за RLS (ограничение прав на уровне записей).
Например, справочник ГруппыДоступа, регистры сведений.
Открыв сохраненные данные можно просмотреть собранные планы выполнения запроса в текстовом и графическом виде. Текстовое представление аналогично тому, что мы видели в ЦУП.
В графическом варианте более наглядно видно большое количество соединений.
Но, как мы помним, под полными правами запрос выполняется достаточно быстро. Значительное замедление получается под ограниченными правами.
Судя по значительной деградации производительности выполнения запроса данный план построен неоптимально и требуется переработка текста запроса в 1С.
ВЫБРАТЬ РАЗРЕШЕННЫЕ
БезналичныеДенежныеСредства.Регистратор КАК Ссылка
ПОМЕСТИТЬ ПлатежныеПоручения
ИЗ
РегистрНакопления.ДенежныеСредстваБезналичные КАК БезналичныеДенежныеСредства
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СписаниеБезналичныхДенежныхСредств КАК ДанныеДокумента
ПО (ДанныеДокумента.Ссылка = БезналичныеДенежныеСредства.Регистратор)
ГДЕ
БезналичныеДенежныеСредства.КСписанию <> 0
И (БезналичныеДенежныеСредства.Период МЕЖДУ &ДатаНачала И &ДатаКонца
ИЛИ &ДатаКонца = ДАТАВРЕМЯ(1, 1, 1)
И БезналичныеДенежныеСредства.Период >= &ДатаНачала)
И ДанныеДокумента.Проведен
И НЕ ДанныеДокумента.ПроведеноБанком
И ДанныеДокумента.ТипПлатежногоДокумента В (ЗНАЧЕНИЕ(Перечисление.ТипыПлатежныхДокументов.ПлатежноеПоручение), ЗНАЧЕНИЕ(Перечисление.ТипыПлатежныхДокументов.РаспоряжениеОбОбязательнойПродаже))
И ДанныеДокумента.БанковскийСчет В(&МассивСчетов)
И (ДанныеДокумента.ДатаВыгрузки = ДАТАВРЕМЯ(1, 1, 1)
ИЛИ НЕ &ТолькоНевыгруженные)
СГРУППИРОВАТЬ ПО
БезналичныеДенежныеСредства.Регистратор
;
////////////////////////////////////////////////////////////////////////////////
…………………
КонтактнаяИнформацияКонтрагента.Страна КАК КонтактнаяИнформацияКонтрагентаСтрана,
КонтактнаяИнформацияКонтрагента.Регион КАК КонтактнаяИнформацияКонтрагентаРегион,
КонтактнаяИнформацияКонтрагента.Город КАК КонтактнаяИнформацияКонтрагентаГород
ПОМЕСТИТЬ БанковскиеСчетаКонтрагентов
ИЗ
Справочник.БанковскиеСчетаКонтрагентов КАК БанковскиеСчетаКонтрагентов
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтактнаяИнформацияКонтрагента
ПО (КонтактнаяИнформацияКонтрагента.Ссылка = БанковскиеСчетаКонтрагентов.Владелец)
И (КонтактнаяИнформацияКонтрагента.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.МеждународныйАдресКонтрагента))
ИНДЕКСИРОВАТЬ ПО
Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
БанковскийСчетОрганизации.Ссылка КАК Ссылка,
БанковскийСчетОрганизации.Владелец КАК Владелец,
БанковскийСчетОрганизации.Владелец.Наименование КАК ВладелецНаименование,
..................................
План выполнения запроса упростился, выполним замеры времени под пользователями с ограниченными правами.
До оптимизации таблица документов заполнялась в среднем - 15 секунд,
после оптимизации запроса - 4 секунды.