Количество измерений в регистре #405269


#0 by selenat
Стало вот интересно, это нормально вообще создавать регистры с количеством измерений больше десятка например? Скорость работы от этого не сильно страдает? А то смотрю например в типовой УТ в регистре ЗаказыПокупателей аж 12 измерений... О-0
#1 by Широкий
Сам то как думаешь?
#2 by selenat
сам думаю, что не хорошо это. Но не настолько хорошо знаю внутренние механизмы, чтобы утверждать что-то уверенно..
#3 by Лефмихалыч
скорости это не добавляет - факт, но иногда по-другому ни как
#4 by Terv
всегда есть варианты. Было бы желание.
#5 by selenat
то, что не добавляет - вопроса нет. Вопрос - на сколько убавляет. А вот насчет по-другому никак - можно бы поспорить. Сдается мне, что такие регистры-монстры появляются скорее от неграмотного проектирования системы...
#6 by selenat
от тож...
#7 by dimoff
Никакого отношения количество измерений не имеет к скорости, имеет отношение лишь количество комбинаций. Если большинство измерений не заполняются или заполняются парой тройкой значений, то большого влияния на производительность не будет.
#8 by Mitriy
вопрос ни о чем...
#9 by Лефмихалыч
(4,5) но зачем-то же их можно больше трех создать :) сам не пробовал
#10 by dimoff
Главное индексировать измерения по которым будут в основном остатки получаться.
#11 by dimoff
Хм, автор только час назах хвастался что всегда задает четккие и понятные вопросы :)
#12 by selenat
это мнение из опыта с использованием тестов, из каких-либо статей о внутренней архитектуре 1С или из чего такой вывод? Звучит весьма правдоподобно, но хотелось бы обоснования услышать. Кроме того, это означает, что если таки все (или большая часть) измерений задействуется для работы, то на скорости это очень даже должно сказываться. А в таком случае может быть стоило бы продумать другую струтуру регистров? Ибо зачем строить то, что не расчитано на полноценное использование всех возможностей?
#13 by selenat
а что неясного и нечеткого в моем вопросе?
#14 by selenat
вопрос об идеолгогии грамотного построения структуры конфы. Вопрос быстродействия - это разве вопрос ни о чем?
#15 by dimoff
Это мнение из простейшей логики. Что делает механизм? 1. При проведении ищет строку итогов по комбинации измерений, пишет туда новое значение. Станет ли он дольше искать, если добавленные измерения не имеют большого количества возможных значений? 2. При запросе ищет в таблице остатков строки остатков по комбинации иизмерений, то же что и 1, зависит от того сколько дополнительных строк в таблице остатков способно создать измерение. "А в таком случае может быть стоило бы продумать другую струтуру регистров?" Имеет смысл говорить о конкретном регистре.
#16 by dimoff
Шучу.
#17 by Лефмихалыч
полагаю, ты не указал, в каких попугайских крыльях измеряется твое "сильно страдает". Да и критериев нормальности при проектировании структутры регистра ты тоже не определил. Исходя из этого, ответить на вопрос адекватно довольно трудно. Я  просто предположил
#18 by Ненавижу 1С
тогда зачем столько?
#19 by selenat
я указал парметр, который меня интересует. Скорость работы...
#20 by selenat
видишь ли, пустое значение измерения - это тоже значение. Соответственно, ищет и пишет он с учетом и тех измерений, которые пользователь может вообще не использовать. Во всяком случае мне так кажется...
#21 by selenat
+20 я уже не раз сталкивался с тем, что простейшая логика (наша логика) не всегда соответствует реальным механизмам платформы. Поэтому хотелось бы более существенных подтверждений этому...
#22 by dimoff
Чтобы ты мог получать полную аналитику. Давай возьмем регистр упомянутый в . Там реально засоряет регистр только измерения Номенклатура и ЗаказПокупателя, все остальные: Характеристика, Ед.изм, Проценты всяких скидок, они для комбинации Номенклатура, ЗаказПокупателя будут единственные, соответственно увыеличения числа записей не будет, но зато по ним ты сможешь делать любые отборы, почему нет?
#23 by selenat
Если некоторым вопрос кажется неконкретным, давайте его сформулируем так. Есть регистр, предположим с 5 измерениями. Предположим, что реально используются все. И хочется туда добавить еще одно, которое тоже будет использоваться. Можно ли заранее предсказать, насколько это может повлиять на скорость работы с регистром...
#24 by dimoff
Пишет и пишет, это просто лишнее поле в регистре остатков, на производительность влияет не более, чем лишнее поле в таблице документа. Почитай внимательно и медитативно 22.
#25 by dimoff
Ответ в 22, проанализирую насколько это увеличит общее количество записей таблицы остатков. В примере с Заказ покупателя реально только два измерения его увеличивают, ну может ещё хаарактеристика, если в одном заказе может быть одна тноменклатура с кучей разных характеристик. Все остальные не увеличивают число записей, а анналитику получать позволяют.
#26 by selenat
прочитал. И насколько я знаю, системе по барабану - что это конкретно за измерение. Будет ли это номенклатура с заказом или что-то второстепенное. На скорость может повлиять только индексированность измерения, а не его смысл...
#27 by selenat
т.е. ты считаешь, что на скорост работы регистра влияет только размер (количество записей), а количество аналитических разрезов не важно? О-0
#28 by Terv
мне кажется в этом вопросе нужно смотреть в сторону скуля, сколько полей он сможет проиндексировать? а так же на возможные блокировки
#29 by Terv
+ да и вообще мне кажется нужно отдельно рассматривать вопросы чтения и записи.
#30 by selenat
согласен, это должно существенно влиять...
#31 by dimoff
Кол-во записей в регистре остатков. О каких блокировках речь? Какие поля он индексирует?
#32 by dimoff
Значит ты вообще не понял что написано в 22
#33 by Terv
ну так в таблице итогов индексируется все вот нарыл Индексы таблиц базы  данных Регистр накопления Основная таблица регистра Индекс    Условие Период + Регистратор + НомерСтроки (Кластерный)    Всегда. Регистратор + НомерСтроки    Всегда. Измерение + Период + Регистратор + НомерСтроки    Измерению "Измерение" задано свойство "Индексировать". Реквизит + Период + Регистратор + НомерСтроки    Реквизиту "Реквизит" задано свойство "Индексировать". Таблица остатков Индекс    Условие Период + Измерение1 + ... + ИзмерениеN (Кластерный)    Для регистров вида "Остатки". Таблица оборотов Индекс    Условие Период + Измерение1 + ... + ИзмерениеN (Кластерный)    Для регистров вида "Обороты".
#34 by selenat
моя твоя не ферштейн. Еще раз вопрос в . тоже верно. Блокировки еще никто не отменял...
#35 by Terv
+ т.е. если измерения регистра только ссылочного типа, то имеем 13 полей для индексирования.
#36 by Terv
+ если в измерениях встречаются простые типы, то еще больше
#37 by Живой Ископаемый
Вообще-то если добавить измерение, то запись замедлится - потому что по этому измерению нужно еще и индекс построить... то сделать дополнительную операцию записи на диск... Но если это клиент-серверный вариант, то построением индексов занимается СКЛ-сервер.. как и когда он строит индексы - нужно его читать...
#38 by dimoff
А, не знал, все равно мне кажется на скорость не сильно влияет. Ответил в 31.
#39 by Живой Ископаемый
на скорость чтения да, возможно и не влияет...
#40 by dimoff
А какой процент времени занимает построение индекса от общего времени записи данных?
#41 by dimoff
На скорость чтения вообще не влияет
#42 by selenat
(38.2) не понял ответа. То, что количество записей влияет на скорость - вопросов нет. Вопрос был в том, считаешь ли ты, что количество аналитических разрезов на нее не влияет...
#43 by dimoff
А что, таблица остатков не индексируется отдельно по измерениям с флагом индексировать? Это было бы очень и очень странно.
#44 by dimoff
На скорость влияет размер таблицы остатков, никакого пряямого отношения к количеству записей он не имеет.
#45 by Живой Ископаемый
не знаю... Могу сделать регистр с 50 измерениями и записать в него 100 по 1000 записей... Потом добавить еще 50 измерений и повторить запись.. в Обоих случаях замерить время... Правда на файловой версии... сделать?
#46 by dimoff
Записей может быть миллион, а размер таблицы остатков может составлять 2 записи, а может и миллион. Я утверждаю, что на размер таблицы остатков регистра ЗаказыПокупателей влияет только количество комбинаций Заказ покупателя -> Номенклатура, все остальные измерения не создают дополнительных записей.
#47 by dimoff
было б интересно.
#48 by dimoff
+46 И посему увеличивают время работы только на увеличение времени составления индекса при записи в регистр остатков.
#49 by Terv
вот что нашел "Принципиальным отличием кластерного индекса от индексов других типов является то, что при его определении в таблице физическое расположение данных перестраивается в соответствии со структурой индекса." т.е. имеем большой индекс, имеем тормоза на запись "Ограничения индексов Индекс может быть создан на основании нескольких полей. В этом случае существует ограничение – длина ключа индекса не должна превышать 900 байтов и не более 16 ключевых столбцов. На практике это означает что при создании индекса, включающего более 16 полей, индекс усекается." + если переползаем за ограничение, то получим тормоза на чтение PS. цитаты отсюда
#50 by Terv
а размеры таблиц и скорость для MS SQL скорее всего очень слабо связаны, обход проблем с размером эт же одна из его функций.
#51 by dimoff
"Принципиальным отличием кластерного индекса от индексов других типов является то, что при его определении в таблице физическое расположение данных перестраивается в соответствии со структурой индекса." т.е. имеем большой индекс, имеем тормоза на запись ==== Не понял вывода, не каждый же раз кластер переопределяется. Толькко при изменении числа измерений.
#52 by Terv
там далее есть "Необходимо избегать создания кластерного индекса для часто изменяемых столбцов, поскольку сервер должен будет выполнять физическое перемещение всех данных в таблице, чтобы они находились в упорядоченном состоянии, как того требует кластерный индекс. Для интенсивно изменяемых столбцов лучше подходит некластерный индекс."
#53 by selenat
ну, все-таки связаны конечно. Обход этих проблем связан как раз с использованием индексов. И взаимосвязь объема с временем получения информации при этом выражается логарифмическим законом....
#54 by dimoff
+ если переползаем за ограничение, то получим тормоза на чтение = Только если конец индекса может быть симльно различным, если поставить измерения в нужной последовательности подобного не будет. Только что посмотрел измерения Заказа покупателя, именно два упомянутые мною индексированы.
#55 by dimoff
Что такое "часто изменяемые столбцы"?
#56 by selenat
а у меня ЗаказПокупателя не индексирован. Только номенклатура...
#57 by Terv
посмотри и увидишь что для таблицы остатков индекс строиться по всем измерениям, а настройка индексировать влияет только на таблицу движений так же не забываем, что все что не попало в индекс, блокируется (т.е. увеличиваем вероятно блокировок) поля, т.е. в нашем случаи измерения, т.е. при каждой новой записи (появление нового значения измерения) в такую таблицу, идет перестроение таблицы остатков.
#58 by selenat
для таблицы остатков кластерный индекс строится по всем измерениям независимо от признака "индексировать"? Это получается тогда, что только порядок следования измерений влияет на скорость работы с таблицей остатков?
#59 by Terv
да.
#60 by selenat
очень интересно...
#61 by Terv
хотя MS SQL "вещь в себе" что там на что влияет, 100% утверждать не получиться ;)
#62 by Terv
насколько я помню еще в 7ке рекомендовали часто используемые измерения располагать первыми.
#63 by selenat
да, я тоже припоминаю...
#64 by Terv
вообще можно посмотреть для примера УПП, где проектирую новую подсистему затрат 1С-ики (учитывая проблемы производительности) создали регистры УчетЗатрат и УчетЗатратРегл, всего с 4мя измерениями, вместо 8-9 в старой подсистеме.
#65 by dimoff
"поля, т.е. в нашем случаи измерения, т.е. при каждой новой записи (появление нового значения измерения) в такую таблицу, идет перестроение таблицы остатков." Таким образом опять же возвращаемся к тому с чего начали - количество измерений неважно, важно насколько часто появляются новые комбинации.
#66 by selenat
я не работал с УПП и не отслеживал историю ее изменения. Но насколько я понимаю, при реальном использовании всех (или большого количества) измерений, проблема, озвученная в имеет место быть. Т.е. это действительно неграмотное проектирование конфы...
#67 by Terv
мое мнение, что для записи скорее всего да, для чтения и блокировок безразлично.
#68 by selenat
2 возражения на это. 1. Зачем тогда вообще проектировать регистр, не расчитывая на его полноценную работу со всеми измерениями. 2. Если ты добавляешь в регистр измерение, которое предполагается реально использовать, то это действительно может повлиять на скорость работы...
#69 by Terv
+ хотя возможно, чем меньше индекс, тем меньше будет перестроения таблицы... у кого бы спросить?
#70 by selenat
так вроде блокировки на запись как раз более сильные, чем на чтение...
#71 by Terv
а я про блокировки на запись и говорил. в 1С читается в основном, вообще не смотря на блокировки.
#72 by selenat
Так, давайте ка все-таки уточним для особо продвинутых типа меня. Есть два измерения. Одно из них принимает мало различных значений, другое - много. В каком порядке их следует поставить в конфигураторе, чтобы сократить перестроения в таблице остатков?
#73 by dimoff
О каких релизах речь? Испокон веку там 4 измерения. Не глупи, совершенно разные регистры с разным назначением. В Учет затрат вообще крайне специфиический набор измерений.
#74 by dimoff
Да Они реально используются, почитай ещё раз внимательно 22. Их использоввание не увеличивает количество записей. По барабану. На перестроения не повилияет.
#75 by selenat
(73.2) про учет затрат я ничего не знаю, поскольку с УПП не работал. Я сейчас говорю об идеологии. Согласись, что даже резервирование товара можно сделать при помощи дополнительного измерения в регистре остатков. Ан нет, выделяют в отдельный регистр. Это к вопросу о разных возможностях проектирования одной и той же задачи...
#76 by dimoff
+74 "Их использоввание не увеличивает количество записей" = Их использоввание не увеличивает количество записей в таблице остатков
#77 by dimoff
Скажи какое из измерений регистра Заказы покупателей лишнее и почему? Я обосновал в 22 что ни одно из неиндексированных измерений этого регистра на производительность не повлияет.
#78 by selenat
да почему же не увеличивает количество записей? Не увеличивает, если есть измерения, которые не используются. Для используемых измерений возникают новые комбинации, которые может быть грамотнее было бы вводить через дополнительный регистр, а не измерение в этом?
#79 by Terv
это для РАУ, страрая подсистема использует регистры: Затраты, Незавершенное производство, Брак в производстве, Затраты на выпуск продукции ... для каждого учета в отдельности ... :)) а еще забыл про наработку, тоже отдельные регистры и еще Партии товаров... вместо всего этого созданы только 2 регистра УчетЗатрат и УчетЗатратРегл
#80 by Terv
+ просто 1С-ики использовали старый прием, для уменьшения количества измерений применил "кортежи"
#81 by selenat
что есть "кортежи"?
#82 by Terv
ну пример у тебя есть 4 измерения: организация, контрагент,договор, заказ .. Создаешь справочник, с такими же полями, и вместо 4 измерений делаешь регистр с 1 измерением этого справочника.
#83 by selenat
ага, ясно.
#84 by Terv
только эти засранцы, сделали хитрее, они использовали не поля справочника, а механизм аналогичный механизму свойств, что бы уменьшить количество блокировок, + возможность легко расширить разрезы учета.
#85 by selenat
(74.3) не повлияет или просто невозможно предсказать - как повлияет в каждом конкретном случае?
#86 by selenat
разумно. Хотя программно работать с этим сложнее...
#87 by selenat
Я правильно понимаю, что перестроение данных в соответствии с кластерным индексом идет в момент записи данных в регистр. Вот кстати, если взять регистр ОстаткиТоваровНаСкладах. Там сначала идет склад (складов заведомо у всех не много), потом уже Номенклатура, характеристика и т.д. Интересно было бы посмотреть на скорость, если номенклатуру перестроить выше склада...
#88 by selenat
отлучусь ненадолго...
#89 by Terv
лови France он вроде у нас спец по этим вопросам, хотя в последнее время его не видно :(
#90 by Terv
+ либо автору ссылки которую я приводил, но здесь он тоже давно не появляется
#91 by dimoff
Смотри, Измерение единица измерения используется? Да. Но увеличит ли оно количество записей, если все равно в одном документе Заказ покупателя редчайший случай чтобы одна номенклатура продавалась по двум разным единицам измерения. Цена то же самое, скидкка то же самое. Договор контрагента увеличит? Нет. На каждый заказ один договор.
#92 by selenat
спасибо! согласен. Я действительно не рассматривал внимательно конкретные измерения этого регистра, хотя именно его приводил в качестве примера в . А сам подразумеваю при этом использование независимых друг от друга измерений. Т.е. ты все это время говорил, что при при наличие таких вот зависимых измерений, их количество не имеет значения. Так? В этом случае скорость чтения данных из таблицы остатков зависит только от порядка следования измерений. Но если рассматривать независимые между собой измерения, то наверное все-таки имеет значение их количество, поскольку количество комбинаций их значений увеличивается. Так?
#93 by dimoff
Да, но опять же это не повод сразу же делать новый регистр, скорость может увеличиться несущественно, будет зависеть от количества проводимых документов и куча всяких прочих факторов надо учитывать.
#94 by selenat
вот, собственно, мы и подошли к вопросу, при каких обстоятельствах какой способ структуры регистров лучше использовать с точки зрения производительности. Вопрос в именно это и подразумевал...
#95 by Живой Ископаемый
Прошу прощения за перерыв, эксперименты отняли больше времени, чем я планировал... И сам план по ходу пришлось изменить... Пока статистика такая:
#96 by Живой Ископаемый
то есть индексированность может влиять довольно существенно... Я бы так сказал...
#97 by у лю 427
для каждой версии скуля существует рекомендация по количеству измерений.
#98 by selenat
а где про это подробнее можно почитать...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям