|
Поменял в стандартном RLS шаблоне, профайлер засветился предупреждениями | ☑ | ||
---|---|---|---|---|
0
Fragster
гуру
09.04.15
✎
13:10
|
Поменял в стандартном RLS шаблоне, профайлер засветился предупреждениями об использовании темпДБ на промежуточных операциях, хотя вроде все быстро стало. поменял вот что:
почти в начале типовых шаблонов:
на
в типовой версии вот этот кусок из плана запроса: http://snag.gy/mE3eu.jpg а у меня - вот: http://snag.gy/gw1u2.jpg статистику 100500 раз обновлял - все равно estimated и actual number of executions у поддерева как расходились, так и расходятся в сотню раз. Вопрос вот в чем - чем грозит моё изменение (не будет ли провалов по производительности в каких-то случаях, а то и неверной работы)? И если не стращно - кому не западло - проверьте у себя эффект? Может можно еще эффективнее без изменения типовой структуры RLS сделать? (с изменениями - понятно, делаем денормализацию и кучу подписок для заполнения денормализованных данных, но это долго писать и отлаживать, во много мест залезать надо). |
|||
1
Fragster
гуру
09.04.15
✎
13:28
|
только у меня RLS тормозит, чтоли?
|
|||
2
Fragster
гуру
09.04.15
✎
13:46
|
или никто стандартными шаблонами не пользуется?
|
|||
3
Гёдза
09.04.15
✎
13:54
|
что поменял в двух словах
|
|||
4
Гёдза
09.04.15
✎
13:55
|
сделай картинку 1с ного сравнения файлов
|
|||
5
EugeniaK
09.04.15
✎
14:02
|
(0) Не могу понять в чем смысл изменения.
Словами напиши. |
|||
6
Fragster
гуру
09.04.15
✎
14:41
|
(3)(5) заменил соединение с условием соединения-подзапросами (по ... и истина в (выбрать первые истина из ....)) на соединение с теми таблицами, по которым идет отбор в тех самых подзапросах
+ избавился от одного соединения |
|||
7
Fragster
гуру
09.04.15
✎
14:43
|
если чем-то поможет сравнение, то вот (хотя в (0) лучше видно):http://snag.gy/UdTrI.jpg
|
|||
8
Гёдза
09.04.15
✎
14:43
|
(6) + избавился от одного соединения
А зря ))) |
|||
9
Гёдза
09.04.15
✎
14:44
|
у тебя появились вложенные соединения
|
|||
10
Гёдза
09.04.15
✎
14:45
|
а раньше был коррелированный запрос в условии
|
|||
11
Fragster
гуру
09.04.15
✎
14:45
|
||||
12
Гёдза
09.04.15
✎
14:46
|
получается что сервер скл лучше разворачивает такие запросы чем ты )))
|
|||
13
Fragster
гуру
09.04.15
✎
14:46
|
(12) т.е. то, что вместо 6 секунд стало 0.3 - это "сервер 1с лучше разворачивает"?
|
|||
14
Гёдза
09.04.15
✎
14:47
|
ребилд индексов когда делал последний раз?
|
|||
15
Fragster
гуру
09.04.15
✎
14:48
|
(14) в ночь на понедельник
|
|||
16
Гёдза
09.04.15
✎
14:49
|
непонятно из (0) на какой операции конкретно ошибается
|
|||
17
Fragster
гуру
09.04.15
✎
14:50
|
ГруппыДоступа.Ссылка В
( Выбрать SORT 22% |
|||
18
Fragster
гуру
09.04.15
✎
14:50
|
(17) + на первой картинке плана
|
|||
19
Гёдза
09.04.15
✎
14:51
|
вообще все запутал
|
|||
20
Fragster
гуру
09.04.15
✎
14:54
|
(19) кусок из того, что было: ГруппыДоступа.Ссылка В (Выбрать...
это на первой картинке то, что выглядит как sort 22% и внутри вложенное всё. сама табличка Справочник.ГруппыДоступа.Пользователи физически называется dbo._Reference62_VT1104 |
|||
21
Fragster
гуру
09.04.15
✎
14:54
|
dbo._InfoRg2967 - это РегистрСведений.СоставыГруппПользователей
|
|||
22
Fragster
гуру
09.04.15
✎
14:56
|
dbo._Reference62 это соответственно Справочник.ГруппыДоступа (от которого там потом в шаблоне используется ссылка)
|
|||
23
H A D G E H O G s
09.04.15
✎
15:22
|
(0) Что тебя пугает?
"предупреждениями об использовании темпДБ"- это Row Count Spool - помещение в ТемпДБ данных о количестве строк, без самих данных - ерунда. Расхождение реальности и предположения - это серьезней. Я даже не знаю, что сказать - я бы воспроизвел бы это на простенькой табличке без обновленной статистики, так чтобы было расхождение "в сотни раз", залез бы в статистику и посмотрел (попробовал бы посмотреть) как работает оптимизатор. |
|||
24
Fragster
гуру
09.04.15
✎
15:25
|
(23) там на sort во многих случаях вылезло:
Operator used tempdb to spill data during execution with spill level 1 |
|||
25
Fragster
гуру
09.04.15
✎
15:34
|
ну и в куче мест estimated number of executions и of rows в десятки и сотни раз различаются. регламенты настроены в соответствии с http://kb.1c.ru/articleView.jsp?id=13 , у базы стоит автообновление статистики
|
|||
26
H A D G E H O G s
09.04.15
✎
15:37
|
(25) Найди табличку, а которой estimated number of rows отличается в десятки раз и посмотри ее статистику глазами.
|
|||
27
Fragster
гуру
09.04.15
✎
15:42
|
(26) эта подойдет? http://snag.gy/dICTk.jpg
|
|||
28
H A D G E H O G s
09.04.15
✎
15:43
|
(27) Да
|
|||
29
Fragster
гуру
09.04.15
✎
15:43
|
или тут причина в number of executions, которая из другого места вылезает? а как это место найти проще? может он на nesttd loops косячит где-то
|
|||
30
H A D G E H O G s
09.04.15
✎
15:44
|
Нет, не подходит, ты прав в (29)
|
|||
31
H A D G E H O G s
09.04.15
✎
15:45
|
Фактически строк 28, ожидаемо 19
|
|||
32
H A D G E H O G s
09.04.15
✎
15:45
|
Ищем того, кто заставил выполняться 250 раз
|
|||
33
Fragster
гуру
09.04.15
✎
15:54
|
(32) похожа на эту: http://snag.gy/h6FWa.jpg
однако пишет, что статистика типа актуальна (это РС составы групп пользователей, там никого сегодня не добавлялось) http://snag.gy/YwXbM.jpg |
|||
34
H A D G E H O G s
09.04.15
✎
15:59
|
(33) Посмотри его статистику
|
|||
36
Fragster
гуру
09.04.15
✎
16:04
|
(34) http://pastebin.com/unn0LGv3
конкретно в этом запросе: Seek Keys[1]: Prefix: [Streloy_Copy].[dbo].[_InfoRg2935]._Fld185; [Streloy_Copy].[dbo].[_InfoRg2935]._Fld2938; [Streloy_Copy].[dbo].[_InfoRg2935]._Fld2936_TYPE; [Streloy_Copy].[dbo].[_InfoRg2935]._Fld2936_RTRef; [Streloy_Copy].[dbo].[_InfoRg2935]._Fld2936_RRRef; [Streloy_Copy].[dbo].[_InfoRg2935]._Fld2937_TYPE; [Streloy_Copy].[dbo].[_InfoRg2935]._Fld2937_RTRef; [Streloy_Copy].[dbo].[_InfoRg2935]._Fld2937_RRRef = Scalar Operator([@P6]); Scalar Operator(0x01); Scalar Operator([Streloy_Copy].[dbo].[_Reference62_VT1104].[_Fld1106_TYPE] as [T7].[_Fld1106_TYPE]); Scalar Operator([Streloy_Copy].[dbo].[_Reference62_VT1104].[_Fld1106_RTRef] as [T7].[_Fld1106_RTRef]); Scalar Operator([Streloy_Copy].[dbo].[_Reference62_VT1104].[_Fld1106_RRRef] as [T7].[_Fld1106_RRRef]); Scalar Operator(0x08); Scalar Operator(0x0000002A); Scalar Operator([@P2]) |
|||
37
Fragster
гуру
09.04.15
✎
16:09
|
(35) а?
|
|||
38
H A D G E H O G s
09.04.15
✎
16:24
|
(37) Я счаст сам разбираюсь.
|
|||
39
Гёдза
09.04.15
✎
16:30
|
а как вообще определяется приблизительное число рядов?
|
|||
40
Гёдза
09.04.15
✎
16:34
|
вот как пример
http://www.sql.ru/forum/301145/estimated-row-count |
|||
41
Fragster
гуру
09.04.15
✎
16:46
|
для шаблона #ПоЗначениям когда на таблицу документа накладывается условие по реквизиту на который натравлены РЛС по группам доступа
вот этот кусок: Выбрать Первые 1 Истина ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения ПО ГруппыЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(6)) И ГруппыЗначений.ЗначениеДоступа = #Параметр(7) И Значения.ГруппаДоступа = ГруппыДоступа.Ссылка И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(6)) И Значения.ТолькоВидДоступа = ГруппыЗначений.ТолькоВидДоступа И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаЗначенийДоступа по РегистрСведений.ЗначенияГруппДоступа дает косяк http://snag.gy/vOWSs.jpg |
|||
42
Fragster
гуру
10.04.15
✎
11:33
|
На боевом режиме изменения из (0) почему-то периодически скатывается в скан по Справочник.ГруппыДоступа.Пользователи, откатил назад.
надо понять, как оптимизатору намекнуть на расхождения в актуальных и предполагаемых данных... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |