Неиндексированные измерения регистров сведений. В помощь 1С:Эксперту

0. RustIG 1690 07.01.20 21:40 Сейчас в теме
Обработка показывает неиндексированные измерения регистров сведений, из-за которых случаются блокировки. Для любых баз 1С - на обычных и управляемых формах.

Перейти к публикации

Отзывы
5. echo77 1725 08.01.20 11:52 Сейчас в теме
(4) имелось ввиду "...потенциально могут служить причиной длительных операций"
17. RustIG 1690 14.01.20 01:00 Сейчас в теме
Обработка создана в обучающих целях по следам просмотра видео-кейса Виктора Богачева.
Вопросы по индексам лучше задавать Виктору Богачеву, который преподаёт курс 1С:Эксперт.
3. RustIG 1690 08.01.20 10:34 Сейчас в теме
(2) если кратко, то это список ваших потенциальных проблем.

вы смотрели видео-кейс?
в видео-кейсе о чем идет речь: о типовой конфигурации или об адаптированной конфигурации?
в видео-кейсе речь идет о типовом регистре или о нетиповом регистре сведений?

в чем проблема всех подобных доработок (в контексте темы видео-кейса):
первый разработчик создает регистр сведений для хранения информации,
второй разработчик пишет запросы к регистру сведений и другие механизмы обработки сведений.
Третий разработчик находит блокировки.
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 07.01.20 23:06
Сообщение было скрыто модератором.
...
2. echo77 1725 08.01.20 07:10 Сейчас в теме
(0) Не совсем понятно, что после этого делать с этой кучей данных?
Не могли бы вы продемонстрировать кейс решения с использованием этой информации?
3. RustIG 1690 08.01.20 10:34 Сейчас в теме
(2) если кратко, то это список ваших потенциальных проблем.

вы смотрели видео-кейс?
в видео-кейсе о чем идет речь: о типовой конфигурации или об адаптированной конфигурации?
в видео-кейсе речь идет о типовом регистре или о нетиповом регистре сведений?

в чем проблема всех подобных доработок (в контексте темы видео-кейса):
первый разработчик создает регистр сведений для хранения информации,
второй разработчик пишет запросы к регистру сведений и другие механизмы обработки сведений.
Третий разработчик находит блокировки.
4. Andreynikus 1249 08.01.20 11:37 Сейчас в теме
> Обработка показывает неиндексированные измерения регистров сведений, из-за которых случаются блокировки.

Шта?
5. echo77 1725 08.01.20 11:52 Сейчас в теме
(4) имелось ввиду "...потенциально могут служить причиной длительных операций"
6. echo77 1725 08.01.20 11:53 Сейчас в теме
(0) Предлагаю немного модифицировать - отображать только измерения РС, содержащие более n записей, чтобы уменьшить объем информации.
7. RustIG 1690 08.01.20 12:02 Сейчас в теме
8. user1274438 13.01.20 13:11 Сейчас в теме
Капец. Витя наткнулся случайно на то, что одно из измерений не индексировано. Ему это один раз помешало что-то удалить. Он запостил ролик про то, как он круто проиндексировал измерение. Нашлась куча чудаков, которые стали тулить индексацию во все места, где им стало внезапно не хватать индексов. Еще бы тюнинг адвизор запустили и автоматом нажали потом "создать все".
9. RustIG 1690 13.01.20 13:15 Сейчас в теме
(8) Добро пожаловать в реальный мир :)
да, он таков, можете сколько угодно удивляться....
если есть вопросы, задавайте.
10. user1274438 13.01.20 13:18 Сейчас в теме
(9) Как Вы думаете, почему 1С в типовых не проиндексировала все измерения во всех регистрах?
11. RustIG 1690 13.01.20 13:35 Сейчас в теме
(10)
1. Давайте сразу оговорим, что я не намерен отдуваться за всю фирму 1С и за всех программистов 1С.

Есть инструмент, никто не предлагает индексировать все измерения во всех регистрах сведений. Это вы сами себе придумали и выдаете за содержание данной статьи.


2. Как думают 1С - я не знаю, и вы знать не можете - каждую конфигурацию разрабатывают своя группа разработчиков. Мы можем только предполагать.

Я просмотрел в БП регистр сведений АналитикаУчетаЗатрат - я полагаю, что измерения не индексировали, поскольку использовать их в запросе напрямую нельзя - эти измерения используются программно алгоритмом, достаточно сложным для восприятия.

Но меня удивило , в УТ не проиндексировано измерение СчетФактура в регистре сведений ЖурналУчетаСчетовФактур...

Я бы рекомендовал индексировать все ссылочные измерения, чтобы не было проблем при обменах и свертках базы. По сути в момент удаления документов.
12. user1274438 13.01.20 13:41 Сейчас в теме
(11) ё!
индексировать все ссылочные измерения
.
Спросите автора ролика на ютубе, на который Вы ссылаетесь, в комментариях там же на ютубе (он там отвечает, вроде, всем), стоит ли так делать? и почему?
14. RustIG 1690 13.01.20 18:16 Сейчас в теме
(12) речь о том, чтобы измерения делать или ведущими - чтобы при удалении записи удалялись автоматом, или индексировать - чтобы в запросах быстрее отборы накладывались.
Я подразумевал для Счетов-фактур (не для всех документов!) делать измерения ведущими, поскольку есть обмены и свертки баз.
В конкретном случае, регистр ЖурналУчетаСчетовФактур подчинен регистратору - которых три типа документов - Счет-фактура выданный и полученный, и ВводОстатков, поэтому при удалении СФ, записи автоматом удалятся... Поэтому еще одно одноименное измерение "СчетФактура" излишне делать ведущим...

Вот и все, я свой гештальт закрыл.
Получается, что в каждом конкретном случае нужно понимать для чего вам надо делать измерение "ведущим" или "индексировать".

А про цитату "индексировать все ссылочные измерения" - это я погорячился. А с вами тем более надо выбирать выражения - чтобы вы не цеплялись за слова.
13. acanta 13.01.20 14:00 Сейчас в теме
Где то читала что первое измерение индексируется платформой всегда, независимо от того есть или нет галочки.
15. triviumfan 79 13.01.20 21:07 Сейчас в теме
(13) Кластерный индекс независимого регистра сведений состоит из всех измерений, идущих по порядку как заданы в конфигураторе. Автор видимо это упустил. А вообще статья... "фейспам".
https://its.1c.ru/db/metod8dev#content:1590:hdoc
16. RustIG 1690 14.01.20 00:26 Сейчас в теме
(15)не фейспам, а фейспалм. Жаль, что вы не поняли суть статьи. За ссылку спасибо, но про индексы на ИТС очень много написано, можно ещё с десяток привести. Какой в этом смысл?
18. triviumfan 79 14.01.20 09:06 Сейчас в теме
(16) Мы в школе 15 лет назад проходили, что
palm [pɑːm] - ладонь


(16)
Какой в этом смысл?
Этим и я задавался, увидев статью.
19. RustIG 1690 14.01.20 10:44 Сейчас в теме
(18)
Мы в школе 15 лет назад проходили, что
palm [pɑːm] - ладонь


даже в таких простых вопросах можно начать спорить.....
слово "Маркетинг" мы произносим с буквой "р", а в англ. транскрипции эту букву мы не произносим. Такова природа англицизмов.


(18)
Какой в этом смысл?
Этим и я задавался, увидев статью.


Смысл статьи - обратить внимание на видео-кейс Виктора Богачева, в котором он находит проблему в измерении, которое не является ведущим и не имеет признака "Индексировать"...
Какой смысл вам прикладывать ссылку на статью ИТС, что все измерения индексируются платформой автоматом - когда у Виктора нашлось одно измерение, которое не проиндексировано - тут никто не разберет....

Виктор - вроде ведущий эксперт, и сомневаться в его словах нет смысла.
Я в обучающих целях реализовал список всех таких измерений - которые не являются ведущими, и не имеют признак "Индексировать". На большее не претендую.

НЕ понимаю, о чем мы спорим? Просто посмотрите видео-кейс, выводы делайте сами, можете поделиться своими знаниями и опытом, видением ситуации.

Переписываться в стиле : "вот тебе теория" - " а вот тебе другая теория" - "а вот еще одна теория" - не вижу смысла...
20. triviumfan 79 14.01.20 11:21 Сейчас в теме
(19)
слово "Маркетинг" мы произносим с буквой "р", а в англ. транскрипции эту букву мы не произносим. Такова природа англицизмов.

Но это немного другое:) Есть диалекты, которые произносят r, особенно американцы. Ладно, забыли.

Посмотрел видео (оказывается, что я его уже когда-то смотрел) - ничего общего со статьей не вижу.

(19)
Смысл статьи - обратить внимание на видео-кейс Виктора Богачева, в котором он находит проблему в измерении, которое не является ведущим и не имеет признака "Индексировать"...

У него там частичное использование кластерного индекса, потому что не по всем измерениям отбор установлен был. Но в реальности это совсем не означает, что нужно бежать индексировать его. Заметил, что там строчка кода записи набора РС ссылается на модуль обновления ИБ, полагаю, что скорее всего показанная ситуация воспроизведена чисто для учебного примера, а на практике она вовсе не встретится.
21. RustIG 1690 14.01.20 11:27 Сейчас в теме
(20) ДА, спасибо за такой ответ.
22. RustIG 1690 14.01.20 12:12 Сейчас в теме
(20) Вообще, по мне, так все просто, что касается, в чем смысл статьи...
сейчас расшифрую....

1) вот отсюда Свойства измерения (ресурса, реквизита) регистра сведений

надо понимать, что
Разработка структуры регистра заключается в создании наборов измерений, ресурсов и реквизитов.

Для управления списком измерений, ресурсов и реквизитов регистра и редактирования их свойств служат управляющие элементы групп Измерения, Ресурсы, Реквизиты окна редактирования Регистр. С точки зрения настройки элементы этих групп одинаковы. Описание порядка использования этих управляющих элементов см. здесь.
5.14.2.4.1. Свойства измерения (ресурса, реквизита) регистра сведений

Свойства измерений, ресурсов и реквизитов редактируются при помощи палитры свойств. В основном они совпадают с общими свойствами объектов конфигурации. Ниже в этом разделе будут описаны уникальные свойства измерений, ресурсов и реквизитов.

Ведущее ‑ установка этого свойства имеет смысл для измерений, тип данных которых ‑ ссылка на объект конфигурации. В этом случае считается, что запись регистра сведений имеет смысл, только пока существует этот объект. При удалении объекта записи по нему будут автоматически удалены из регистра.

Запрет пустых значений ‑ установка этого флажка включает механизм запрета записи регистра с пустым значением измерения.

Индексировать ‑ для измерений свойство доступно для редактирования, если измерение не является ведущим. Для измерений, ресурсов и реквизитов с установленным свойством Индексировать создается отдельный индекс, что увеличивает производительность при работе с регистром. Для ведущих измерений индекс создается всегда.

При просмотре регистра в режиме 1С:Предприятие существует возможность сортировать записи регистра по индексированным измерениям, ресурсам и реквизитам. Необходимое число форм для просмотра и редактирования регистра должно быть создано в процессе разработки конфигурации.
Показать


2) вот здесь Индексирование реквизитов объектов

надо понимать , что
Большинство прикладных объектов конфигурации имеют в составе подчиненных объектов группу Реквизиты. В этой группе указываются дополнительные характеристики объектов.

В режиме 1С:Предприятие часто требуется осуществлять отбор данных по значению какого-либо реквизита или сортировать списки данных по реквизитам. Средства «1С:Предприятия» позволяют выполнить подобную задачу, однако если данных достаточно много, такая задача может выполняться долго.

Чтобы ускорить эту работу, следует реквизитам, по которым будет выполняться отбор или сортировка, устанавливать свойство Индексировать. Если свойство установлено (выбрано значение Индексировать или Индексировать с доп. упорядочиванием), то подобные задачи будут выполняться эффективнее. Для примитивных типов реквизитов указание индексирования предоставляет пользователям средство сортировки списка по щелчку мыши в области заголовка колонки.

Наряду с сортировкой по реквизиту или отбором данных по значению какого-либо реквизита часто требуется, чтобы в результирующем списке данные были дополнительно отсортированы по основному представлению (наименованию или коду), т. е. в пределах одного значения реквизита записи были отсортированы по представлению. Добиться правильного результата можно, если выбрано значение индексирования Индексировать, а в условиях сортировки списка указаны реквизит и представление.


3) Выводы. Собственно, список показывает измерения, по которым не задано свойство Ведущее и признак Индексировать. Если вы обслуживаете типовые конфы, то можете проверить эффективность типовых регистров - конечно, нужно ли индексировать или нет - зависит от применяемых запросов и алгоритмов обработки, а это зависит напрямую от целей задачи, для которой регистр был создан...
Если у вас своя разработка - то список покажет вам потенциальные проблемы - локализует регистр и измерение - далее исходя из своих запросов и алгоритмов вы решите , нужно ли индексировать или нет....

Делать ли ведущим измерение - это совершенно другой вопрос, создавать ли дополнительно индекс по реквизиту - это другой вопрос - эти вопросы по сути относятся к разным задачам....
Так получилось, что проиндексировать измерение можно, сделав его ведущим - но насколько это оправдано - это тоже вопрос - может при удалении документа - не надо чтобы удалялись записи?! - Виктор этот вопрос не освещает. Я думаю, что он также в обучающих целях создал пример и продемонстрировал кейс.

4) расшифрую ссылку , которую вы прислали: платформа на некоторые измерения сама создает индексы
Индекс кластерный, если регистр независимый.
,
на другие только при условии
Измерению "ИзмерениеN" задано свойство "Индексировать" или свойство "Ведущее" и при этом это не единственное измерение.


Разработчик по сути должен управлять этим.
24. triviumfan 79 14.01.20 14:01 Сейчас в теме
(22) Судя по коду обработки статьи, то она выводит измерения РС (почему только РС?!), по которым отсутствует дополнительный индекс (опираясь на данные встроенной функции получения структуры конфигурации, но на самом деле индекс может быть добавлен в СУБД).
Но вы не учли, что кластерный индекс есть всегда (считаем, что хотя бы одно измерение имеется) и первое измерение в цикле нужно пропустить.

Если НЕ Измерение.Ведущее И Измерение.Индексирование = Метаданные.СвойстваОбъектов.Индексирование.НеИндексировать
И Регистр.Измерения.Индекс(Измерение) > 0 Тогда

А то получается, что он попадёт в "потенциальные"... чего-то там :).
По факту эти полученные данные по измерениям ничего не несут - все зависит от конкретной конфигурации и случая.
26. RustIG 1690 14.01.20 14:16 Сейчас в теме
(24)
почему только РС

верно, обработку можно расширять для других объектов метаданных. пока что идет "наращивание массы", мускулы будут потом...

(24)
кластерный индекс есть всегда

насколько он приемлем в отборах и поисках по конкретному измерению? допустим, что рассматриваем случай РС с двумя измерениями....

(24)
по которым отсутствует дополнительный индекс
верно

(24)
он попадёт в "потенциальные"... чего-то там
верно. сейчас анализ применимости индекса остается не за обработкой , а за разработчиком....

(24)
По факту эти полученные данные по измерениям ничего не несут
тут спорно - поскольку у каждого своя база, и могут быть допущены ошибки на уровне архитектуры решения - добавлены измерения, которые особенно надо индексировать - опять-таки гипотетически рассуждаю, поскольку анализ остается не за обработкой, а за разработчиком....
28. triviumfan 79 14.01.20 14:42 Сейчас в теме
(26) Полагаю, что анализ об использовании индексов нужно производить из метрик СУБД (в ms sql это sys.dm_db_missing_index_details), там будет предельно исчерпывающая информация по ним. А эта обработка только вносит путаницу.
(26)
насколько он приемлем в отборах и поисках по конкретному измерению? допустим, что рассматриваем случай РС с двумя измерениями....

Если по первому измерению - то все ок, если по первому и второму - тоже, а если только по второму - то скан.
29. RustIG 1690 14.01.20 16:30 Сейчас в теме
(28) у многих файловые базы, и конечно чаще бывает что отборы по измерениям независимы, чем зависимы, поиск должен быть как по первому так и по второму измерению одинаково быстрым.
23. RustIG 1690 14.01.20 13:20 Сейчас в теме
(15) Добавил анализ режима записи регистра (Независимый, Подчинен регистратору) и периодичность (Непериодический, Периодический). Поскольку от этого зависит - какие индексы создаст платформа согласно условиям.

Хоть кластерный индекс и создается всегда для независимого непериодического регистра сведений, непонятно, насколько оптимально он используется при поисках и отборах по конкретному измерению? Я думаю, для оптимальной работы надо создать отдельный индекс по конкретному измерению - а это делается через принудительное указание признаков "Ведущее" или "Индексировать"... Поясните, пож-та, вашу точку зрения.
17. RustIG 1690 14.01.20 01:00 Сейчас в теме
Обработка создана в обучающих целях по следам просмотра видео-кейса Виктора Богачева.
Вопросы по индексам лучше задавать Виктору Богачеву, который преподаёт курс 1С:Эксперт.
25. acanta 14.01.20 14:12 Сейчас в теме
Случайно это не та же проблема что и в регистрах остатков, когда первое измерение товар, второе склад, не оптимально выбирать остатки товаров по складу?
Рауз эту проблему решает радикально, одно общее измерение на всех, но это именно регистр сведений и нагрузка на него большая.
27. RustIG 1690 14.01.20 14:19 Сейчас в теме
30. mm_84 17.01.20 19:24 Сейчас в теме
"Обработка показывает неиндексированные измерения регистров сведений, из-за которых случаются блокировки. Для любых баз 1С - на обычных и управляемых формах. "
Как-то непрофессионально написано... блокировки случаются и они не случайны, причем тут вообще с индексация реквизитов.
Этот случай - капля в море проблем с производительностью. Начинается все с ошибок проектирования регистров и непродуманных запросов.
31. RustIG 1690 18.01.20 21:33 Сейчас в теме
(30) находите запроектированный вами или вашими прогерами регистр, смотрите через глобальный поиск в каких запросах участвует. Далее анализируете все ли оптимально.
а по поводу непрофессионально написано, и капля в море, так я не спорю и не претендую на большее.
Оставьте свое сообщение
Вакансии
Аналитик 1C
Москва
зарплата от 120 000 руб. до 250 000 руб.
Полный день

Тестировщик 1С
Москва
зарплата от 125 000 руб.
Полный день

Программист/тестировщик
Москва
зарплата от 130 000 руб. до 150 000 руб.
Полный день

Ведущий разработчик 1С / Team lead отдела разработки 1С
Москва
зарплата от 300 000 руб. до 300 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 180 000 руб.
Полный день