|
Разное время выполнения одного простого запроса. | ☑ | ||
---|---|---|---|---|
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 раз. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |