Имя: Пароль:
1C
1С v8
Разное время выполнения одного простого запроса.
0 pmb
 
24.10.11
17:40
Один и тот же запрос под разными пользователями выполняется разное время.
Для удобства вытащил запрос в отдельную обработку:

   Запрос = Новый Запрос();
   Запрос.УстановитьПараметр("Ссылка", Номенклатура);
   Запрос.Текст =            "ВЫБРАТЬ
           |    ЗначенияСвойствОбъектов.Значение КАК ЗначениеСвойства,
           |    ЗначенияСвойствОбъектов.Свойство
           |ИЗ
           |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
           |ГДЕ
           |    ЗначенияСвойствОбъектов.Объект = &Ссылка";
   Выборка = Запрос.Выполнить().Выбрать();
Время выполнения строки
   Выборка = Запрос.Выполнить().Выбрать();
под пользователем с полными правами раз в 6 меньше чем под обычным пользователем (УПП, платформа 8.1.15, MS SQL 2008R2)

Запустил SQL Profiler, он в обоих случаях показывает один и тот же текст запроса:

exec sp_executesql N'SELECT
_InfoReg17548_Q_000_T_001._Fld17551_TYPE AS f_1,
_InfoReg17548_Q_000_T_001._Fld17551_L AS f_2,
_InfoReg17548_Q_000_T_001._Fld17551_N AS f_3,
_InfoReg17548_Q_000_T_001._Fld17551_T AS f_4,
_InfoReg17548_Q_000_T_001._Fld17551_S AS f_5,
_InfoReg17548_Q_000_T_001._Fld17551_RTRef AS f_6,
_InfoReg17548_Q_000_T_001._Fld17551_RRRef AS f_7,
_InfoReg17548_Q_000_T_001._Fld17550RRef AS f_8
FROM
_InfoReg17548 _InfoReg17548_Q_000_T_001 WITH(NOLOCK)
WHERE
_InfoReg17548_Q_000_T_001._Fld17549_TYPE = P1 AND _InfoReg17548_Q_000_T_001._Fld17549_RTRef = @P2 AND _InfoReg17548_Q_000_T_001._Fld17549_RRRef = @P3',N'P1 varbinary(1),@P2 varbinary(4),@P3 varbinary(16)',0x08,0x0000007F,0x9224001517D7F5C111E0CEDA539085AC


ShowPlan Statistic Profile показывает в обоих случаях одно и тоже.

вопрос почему скорость выполнения меняется почти в 6 раз?
1 pmb
 
24.10.11
17:42
Это результат ShowPlan Statistic Profile в первом и во втором случае:



Rows         Executes     StmtText                                                                                                                                                                                                                                                                                                     StmtId       NodeId       Parent       PhysicalOp   LogicalOp    Argument                                                                                                                                                                                                                                                                                    DefinedValues                                                                                                                                                                                                                                                                                                          EstimateRows EstimateIO   EstimateCPU  AvgRowSize   TotalSubtreeCost OutputList                                                                                                                                                                                                                                                                                                                                                          Warnings     Type         Parallel     EstimateExecutions
----         --------     --------                                                                                                                                                                                                                                                                                                     ------       ------       ------       ----------   ---------    --------                                                                                                                                                                                                                                                                                    -------------                                                                                                                                                                                                                                                                                                          ------------ ----------   -----------  ----------   ---------------- ----------                                                                                                                                                                                                                                                                                                                                                          --------     ----         --------     ------------------
1            1            Nested Loops(Inner Join, OUTER REFERENCES:([Bmk1000]))                                                                                                                                                                                                                                                       0            0                         Nested Loops Inner Join   OUTER REFERENCES:([Bmk1000])                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       1            0            4,18E-006    166          0,00657038       [_InfoReg17548_Q_000_T_001].[_Fld17550RRef], [_InfoReg17548_Q_000_T_001].[_Fld17551_TYPE], [_InfoReg17548_Q_000_T_001].[_Fld17551_L], [_InfoReg17548_Q_000_T_001].[_Fld17551_N], [_InfoReg17548_Q_000_T_001].[_Fld17551_T], [_InfoReg17548_Q_000_T_001].[_Fld17551_S], [_InfoReg17548_Q_000_T_001].[_Fld17551_RTRef], [_InfoReg17548_Q_000_T_001].[_Fld17551_RRRef]              PLAN_ROW     0            1                  
1            1              |--Index Seek(OBJECT:([test_sql].[dbo].[_InfoReg17548].[_InfoR17548_ByDims_RR] AS [_InfoReg17548_Q_000_T_001]), SEEK:([_InfoReg17548_Q_000_T_001].[_Fld17549_TYPE]=[@P1] AND [_InfoReg17548_Q_000_T_001].[_Fld17549_RTRef]=[@P2] AND [_InfoReg17548_Q_000_T_001].[_Fld17549_RRRef]=[@P3]) ORDERED FORWARD) 0            1            0            Index Seek   Index Seek   OBJECT:([test_sql].[dbo].[_InfoReg17548].[_InfoR17548_ByDims_RR] AS [_InfoReg17548_Q_000_T_001]), SEEK:([_InfoReg17548_Q_000_T_001].[_Fld17549_TYPE]=[@P1] AND [_InfoReg17548_Q_000_T_001].[_Fld17549_RTRef]=[@P2] AND [_InfoReg17548_Q_000_T_001].[_Fld17549_RRRef]=[@P3]) ORDERED FORWARD [Bmk1000], [_InfoReg17548_Q_000_T_001].[_Fld17550RRef]                                                                                                                                                                                                                                                                 1            0,003125     0,0001581    31           0,0032831        [Bmk1000], [_InfoReg17548_Q_000_T_001].[_Fld17550RRef]                                                                                                                                                                                                                                                                                                                           PLAN_ROW     0            1                  
1            1              |--RID Lookup(OBJECT:([test_sql].[dbo].[_InfoReg17548] AS [_InfoReg17548_Q_000_T_001]), SEEK:([Bmk1000]=[Bmk1000]) LOOKUP ORDERED FORWARD)                                                                                                                                                                 0            3            0            RID Lookup   RID Lookup   OBJECT:([test_sql].[dbo].[_InfoReg17548] AS [_InfoReg17548_Q_000_T_001]), SEEK:([Bmk1000]=[Bmk1000]) LOOKUP ORDERED FORWARD                                                                                                                                                                 [_InfoReg17548_Q_000_T_001].[_Fld17551_TYPE], [_InfoReg17548_Q_000_T_001].[_Fld17551_L], [_InfoReg17548_Q_000_T_001].[_Fld17551_N], [_InfoReg17548_Q_000_T_001].[_Fld17551_T], [_InfoReg17548_Q_000_T_001].[_Fld17551_S], [_InfoReg17548_Q_000_T_001].[_Fld17551_RTRef], [_InfoReg17548_Q_000_T_001].[_Fld17551_RRRef] 1            0,003125     0,0001581    150          0,0032831        [_InfoReg17548_Q_000_T_001].[_Fld17551_TYPE], [_InfoReg17548_Q_000_T_001].[_Fld17551_L], [_InfoReg17548_Q_000_T_001].[_Fld17551_N], [_InfoReg17548_Q_000_T_001].[_Fld17551_T], [_InfoReg17548_Q_000_T_001].[_Fld17551_S], [_InfoReg17548_Q_000_T_001].[_Fld17551_RTRef], [_InfoReg17548_Q_000_T_001].[_Fld17551_RRRef]                                                           PLAN_ROW     0            1                  


Rows         Executes     StmtText                                                                                                                                                                                                                                                                                                     StmtId       NodeId       Parent       PhysicalOp   LogicalOp    Argument                                                                                                                                                                                                                                                                                    DefinedValues                                                                                                                                                                                                                                                                                                          EstimateRows EstimateIO   EstimateCPU  AvgRowSize   TotalSubtreeCost OutputList                                                                                                                                                                                                                                                                                                                                                          Warnings     Type         Parallel     EstimateExecutions
----         --------     --------                                                                                                                                                                                                                                                                                                     ------       ------       ------       ----------   ---------    --------                                                                                                                                                                                                                                                                                    -------------                                                                                                                                                                                                                                                                                                          ------------ ----------   -----------  ----------   ---------------- ----------                                                                                                                                                                                                                                                                                                                                                          --------     ----         --------     ------------------
1            1            Nested Loops(Inner Join, OUTER REFERENCES:([Bmk1000]))                                                                                                                                                                                                                                                       0            0                         Nested Loops Inner Join   OUTER REFERENCES:([Bmk1000])                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       1            0            4,18E-006    166          0,00657038       [_InfoReg17548_Q_000_T_001].[_Fld17550RRef], [_InfoReg17548_Q_000_T_001].[_Fld17551_TYPE], [_InfoReg17548_Q_000_T_001].[_Fld17551_L], [_InfoReg17548_Q_000_T_001].[_Fld17551_N], [_InfoReg17548_Q_000_T_001].[_Fld17551_T], [_InfoReg17548_Q_000_T_001].[_Fld17551_S], [_InfoReg17548_Q_000_T_001].[_Fld17551_RTRef], [_InfoReg17548_Q_000_T_001].[_Fld17551_RRRef]              PLAN_ROW     0            1                  
1            1              |--Index Seek(OBJECT:([test_sql].[dbo].[_InfoReg17548].[_InfoR17548_ByDims_RR] AS [_InfoReg17548_Q_000_T_001]), SEEK:([_InfoReg17548_Q_000_T_001].[_Fld17549_TYPE]=[@P1] AND [_InfoReg17548_Q_000_T_001].[_Fld17549_RTRef]=[@P2] AND [_InfoReg17548_Q_000_T_001].[_Fld17549_RRRef]=[@P3]) ORDERED FORWARD) 0            1            0            Index Seek   Index Seek   OBJECT:([test_sql].[dbo].[_InfoReg17548].[_InfoR17548_ByDims_RR] AS [_InfoReg17548_Q_000_T_001]), SEEK:([_InfoReg17548_Q_000_T_001].[_Fld17549_TYPE]=[@P1] AND [_InfoReg17548_Q_000_T_001].[_Fld17549_RTRef]=[@P2] AND [_InfoReg17548_Q_000_T_001].[_Fld17549_RRRef]=[@P3]) ORDERED FORWARD [Bmk1000], [_InfoReg17548_Q_000_T_001].[_Fld17550RRef]                                                                                                                                                                                                                                                                 1            0,003125     0,0001581    31           0,0032831        [Bmk1000], [_InfoReg17548_Q_000_T_001].[_Fld17550RRef]                                                                                                                                                                                                                                                                                                                           PLAN_ROW     0            1                  
1            1              |--RID Lookup(OBJECT:([test_sql].[dbo].[_InfoReg17548] AS [_InfoReg17548_Q_000_T_001]), SEEK:([Bmk1000]=[Bmk1000]) LOOKUP ORDERED FORWARD)                                                                                                                                                                 0            3            0            RID Lookup   RID Lookup   OBJECT:([test_sql].[dbo].[_InfoReg17548] AS [_InfoReg17548_Q_000_T_001]), SEEK:([Bmk1000]=[Bmk1000]) LOOKUP ORDERED FORWARD                                                                                                                                                                 [_InfoReg17548_Q_000_T_001].[_Fld17551_TYPE], [_InfoReg17548_Q_000_T_001].[_Fld17551_L], [_InfoReg17548_Q_000_T_001].[_Fld17551_N], [_InfoReg17548_Q_000_T_001].[_Fld17551_T], [_InfoReg17548_Q_000_T_001].[_Fld17551_S], [_InfoReg17548_Q_000_T_001].[_Fld17551_RTRef], [_InfoReg17548_Q_000_T_001].[_Fld17551_RRRef] 1            0,003125     0,0001581    150          0,0032831        [_InfoReg17548_Q_000_T_001].[_Fld17551_TYPE], [_InfoReg17548_Q_000_T_001].[_Fld17551_L], [_InfoReg17548_Q_000_T_001].[_Fld17551_N], [_InfoReg17548_Q_000_T_001].[_Fld17551_T], [_InfoReg17548_Q_000_T_001].[_Fld17551_S], [_InfoReg17548_Q_000_T_001].[_Fld17551_RTRef], [_InfoReg17548_Q_000_T_001].[_Fld17551_RRRef]                                                           PLAN_ROW     0            1
2 izekia
 
24.10.11
17:42
рлс
3 izekia
 
24.10.11
17:42
(1) ты это зачем все вывалил?)
4 klis
 
24.10.11
17:44
RLS?
5 Живой Ископаемый
 
24.10.11
17:44
Leonard: Are you insane?
Sheldon: No, my mom had me tested
6 cViper
 
24.10.11
17:45
(3) пОциент какбы демонстрирует нам умение работать с профайлером )))
7 cViper
 
24.10.11
17:45
(0) Это рлс. Сам недано поражался как сильно оно понижает производительность.
8 SuperMario
 
24.10.11
17:47
(7) а вы хотели и rls запользовать и производительность не потерять? Что бы я так жил!
9 pmb
 
24.10.11
17:48
(7) а как его увидеть в профайлере?
10 Александр_
Тверь
 
24.10.11
17:48
кстати, если РЛС то должны выполнять разные запросы под разными пользователями.
11 pmb
 
24.10.11
17:49
(3), (6) не нашел как файлы приекрепить, поэтому и вывалил...
12 pmb
 
24.10.11
17:50
(11) если можно, пусть модераторы порежут лишнее
13 pmb
 
24.10.11
17:52
кстати на сам РС РЛС нет.
14 МихаилМ
 
24.10.11
18:02
очевидно, что скл тут не причём.

1с анализирует запрос для применение рлс

причем

тк Вы устроили винигрет из Запрос.Выполнить().Выбрать()

то непонятно, какой оператор приводит к замедлению

выполнить() или выбрать()
15 pmb
 
24.10.11
18:10
(14) к замедлению приводит оператор Выполнить().
А что ресурсоемкого 1С может делать при вызове этих операторов?
16 pmb
 
24.10.11
18:13
Сейчас убрал все РЛС у одной из ролей, назначенных пользователю, под которым запрос выполняется длительное время на сам РС, справочник "Номенклатура" и справочник "ЗначениеСвойствОбъектов" - скорость выполнения не изменилась.
17 hhhh
 
24.10.11
18:16
(16) а разве у ЗначенияСвойствОбъектов.Объект только справочник номенклатура задействован? Там вроде 155 справочников и еще кроме справочников что-то есть.
18 pmb
 
24.10.11
18:23
(17)
У ПВХ "СвойстваОбъектов" оставил только один тип - справчоник "ЗначениеСвойствОбъектов"  - результат тотже - разница в скорости выполнения запроса под полными правами и обычным пользователем 6-7 раз.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.