|
MS SQL и 1С. Объясните, где я не прав? | ☑ | ||
---|---|---|---|---|
0
H A D G E H O G s
11.01.19
✎
00:52
|
Дня доброго.
Внедрение, внедрение, документ медленно записывает регистр сведений, который ему подчинен и имеет срез итогов. Затык вот тут INSERT INTO #tt24 WITH(TABLOCK) (_Period, _RecorderTRef, _RecorderRRef, _Fld8417RRef, _Fld8418RRef, _Fld8419RRef, _Fld8420, _Fld8421RRef, _Fld8422RRef, _Fld281) SELECT T1._Period, T1._RecorderTRef, T1._RecorderRRef, T1._Fld8417RRef, T1._Fld8418RRef, T1._Fld8419RRef, T1._Fld8420, T1._Fld8421RRef, T1._Fld8422RRef, T1._Fld281 FROM dbo._InfoRgSL8427 T1 INNER JOIN dbo._InfoRg8416 T2 ON T2._Fld8417RRef = T1._Fld8417RRef AND T2._Fld8418RRef = T1._Fld8418RRef AND T2._Fld8419RRef = T1._Fld8419RRef AND T2._Fld281 = T1._Fld281 WHERE (((T1._Fld281 = P1)) AND (T2._Fld281 = @P2)) AND (T2._RecorderTRef = 0x0000008D AND T2._RecorderRRef = @P3) Сначало долго тупил и не верил своим глазам - tablescan по _InfoRgSL8427, а потом присмотрелся и увидел, что единственный индекс по _InfoRgSL8427 - некластерный. Ну я понимаю, чтобы быстрее вставки были, но как так то, тут и так как раз запись в регистр идет. Это глюк или хитрый план? Платформа 8.3.12 |
|||
1
Fram
11.01.19
✎
01:45
|
(0) обе таблицы огромные?
|
|||
2
Fram
11.01.19
✎
01:46
|
попробуй сначала отбор по одной, а потом соединение, если это вощможно на стороне 1С
|
|||
3
Курцвейл
11.01.19
✎
06:33
|
Это явный глюк. Хитрые планы в природе встречаются гораздо реже.
|
|||
4
АНДР
11.01.19
✎
06:37
|
Это вставка во временную таблицу, а не запись в регистр.
Скан таблицы ты сам заказал, не указав в УСЛОВИЯХ СОЕДИНЕНИЯ ограничение на КЛЮЧЕВОЕ для таблицы среза первых (последних) поле period. Условие на регистратор применяется уже к итогам объединения. |
|||
5
мокасинчик
11.01.19
✎
06:49
|
(4) если для таблицы среза не указывать период, то берутся текущие итоги
(0) выкладывай план в sqlplan |
|||
6
АНДР
11.01.19
✎
07:47
|
(5) В 1С - да. Из ограничения приведенного запроса этого не следует.
|
|||
7
rphosts
11.01.19
✎
09:09
|
(0)ну дык срез-же... там случайно не ресурсы тебе нечисловые нужны?
|
|||
8
Конструктор1С
11.01.19
✎
09:15
|
Хех... Один из параметров запроса оказался зареганным на форуме)
|
|||
9
ptiz
11.01.19
✎
09:25
|
(0) Т.е. индексы не соответствуют описанию тут?
https://its.1c.ru/db/metod8dev#content:1590:hdoc@2db36f1b |
|||
10
H A D G E H O G s
11.01.19
✎
09:47
|
Ну, ничего нового.
Если внимательно прочитать заголовок, то можно увидеть "документ медленно записывает регистр сведений, который ему подчинен и имеет срез итогов. " |
|||
11
H A D G E H O G s
11.01.19
✎
09:49
|
В процессе записи регистра, есть этап записи во временную таблицу, это делает платформа. 600 kReads на ровном месте.
|
|||
12
bolobol
11.01.19
✎
10:19
|
(11) Вы уже сообщили куда следует?
|
|||
13
Вафель
11.01.19
✎
10:27
|
как вариант сделать свою таблицу итогов
|
|||
14
H A D G E H O G s
11.01.19
✎
10:29
|
(12) (13) Я уже прочитал где следует
http://downloads.v8.1c.ru/content//Platform/8_3_13_1644/1cv8upd_8_3_13_1644.htm#199f74c8-0668-11e8-a3f7-0050569f678a Для регистров сведений реализовано формирование кластерного индекса по измерениям для физических таблиц среза первых и среза последних. Описание структуры индекса (см. здесь). Отключен контроль уникальности индексов. Оптимизированы запросы получения данных из таблиц срезов. Построение новых индексов выполняется во время реструктуризации соответствующего регистра сведений или при выполнении реструктуризации базы данных во время выполнения операции тестирования и исправления. Источник: http://downloads.v8.1c.ru/content//Platform/8_3_13_1644/1cv8upd_8_3_13_1644.htm#0055064e-0a7f-11e8-a3f7-0050569f678a |
|||
15
H A D G E H O G s
11.01.19
✎
10:30
|
Ну как так то, почему это появилось в 8.3.13, на которую мы не перейдем еще долго.
|
|||
16
H A D G E H O G s
11.01.19
✎
10:33
|
Но у меня есть хитрый план.
|
|||
17
bolobol
11.01.19
✎
11:07
|
(16) Как правильно было замечено в (3): "Это явный глюк. Хитрые планы в природе встречаются гораздо реже."
|
|||
18
Fragster
гуру
11.01.19
✎
11:21
|
это из-за суррогатного поля первичного ключа или что-то типа того?
|
|||
19
H A D G E H O G s
11.01.19
✎
11:29
|
(18) нет. Это из за того, что нет кластерного индекса. И некластерный индекс может поискать только внутри себя и даже RIDLookup не сделать.
|
|||
20
H A D G E H O G s
11.01.19
✎
11:31
|
А запросу нужны вот эти парни
T1._Period, T1._RecorderTRef, T1._RecorderRRef, которых нет в некласетрном индексе |
|||
21
rsv
11.01.19
✎
11:31
|
(0) попробуйте ради интереса в студии inner hash join
|
|||
22
Dmitry1c
11.01.19
✎
11:33
|
Будни экспертов по платформе.
|
|||
23
Вафель
11.01.19
✎
11:36
|
индекс можно ручками добавить, если так нужно
|
|||
24
H A D G E H O G s
11.01.19
✎
11:37
|
(23) Ох уж эти хитрые планы.
|
|||
25
Вафель
11.01.19
✎
11:39
|
(24) да пожизненно так делали
|
|||
26
rphosts
11.01.19
✎
17:58
|
(16) это нарушение лиц. соглашения
|
|||
27
Fram
11.01.19
✎
18:17
|
(26) вот ведь проблема
|
|||
28
rphosts
11.01.19
✎
18:19
|
(27) это факт, а проблема или нет - решает каждый сам для себя...
|
|||
29
Конструктор1С
12.01.19
✎
04:49
|
Как-то беспечно 1Сники пока что относятся к нарушению лицензионного соглашения. А ведь с точки зрения ЛС, что платформу крякнуть, что индекс средствами СУБД ляпнуть, это всё едино нарушение ЛС, со всеми вытекающими.
|
|||
30
h_miha
12.01.19
✎
05:22
|
я писал об этой ошибке год назад на форуме разработчиков 1с https://partners.v8.1c.ru/forum/, на что мне был дан ответ что это зарегистрированная ошибка. суть в том что таблицы, в которых хранится срез актуальных итогов ( т.е. при установленном флаге "Хранить итоги срез последних" практически единственная представляет из себя кучу (т.е. не имеет кластеризованного индекса, данные не упорядочены) помимо этого настройка регистра сведений : признак индексировать у измерения также не переносится в эту таблицу. вариантов несколько: 1) отключить флаг "Хранить итоги срез последних" 2) в запросе указать дату (возможно отличную от текущей хотя бы на секунду) - будет использован подзапрос к основной таблице 3) самостоятельно навешать кластеризованный индекс = )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |