![]() |
|
Как лучше спроектировать регистр | ☑ | ||
---|---|---|---|---|
0
lanc2233
20.11.20
✎
12:51
|
Есть регистр, что-то типа лога.
Подразумеваются что в нем будет много записей, операции чтения, поиск записей и их редактирование через МенеджерЗаписи, изменение записей при проведении документов. Одно из измерений регистра будет иметь составной тип "ЗаказПокупателя", "ЗаказПоставщику" и так около 5-7 типов (в процессе может добавляться). Как лучше поступить, с точки зрения производительности : делать одно измерение с составным типом, или сделать 5-7 разных измерений с разными типами? Когда-то вроде читал, что у реквизитов с составными типами нелинейно растет нагрузка на БД, особенно если включена индексация по ним. |
|||
1
mikecool
20.11.20
✎
12:53
|
на каждый тип документа добавлять новое измерение? оО
|
|||
2
ДенисЧ
20.11.20
✎
12:58
|
Надо не "когда-то читать", а взять и посмотреть на структуру таблиц. Потом смоделировать ситуацию и покурить планы запросов.
Но вот идея "5-7 разных измерений с разными типами" - она однозначно влечёт за собой канделябр. |
|||
3
VladZ
20.11.20
✎
13:00
|
(0) "Есть регистр, что-то типа лога." - убрать нахрен все ссылочные объекты. Оставить только текст.
|
|||
4
youalex
20.11.20
✎
13:04
|
(0) одно измерение - уникальный идентификатор. Писать через НаборЗаписей.Записать(Ложь)
Документ - в реквизит, и индекс на него, если надо. |
|||
5
lanc2233
20.11.20
✎
13:07
|
Да, крутое решение. Спасибо.
|
|||
6
youalex
20.11.20
✎
13:09
|
(5) Только учти, что индекс работает только по одному реквизиту/ресурсу, в отличие от индекса по измерениям.
Т.е. если у тебя стоит в двух реквизитах стоит индексировать, эти индексы не "складываются", будет работать только один из них. |
|||
7
H A D G E H O G s
20.11.20
✎
13:13
|
(6) Реквизиты не складываются, а вот Реквизит и Измерение складывается.
|
|||
8
H A D G E H O G s
20.11.20
✎
13:15
|
Решение с UUID забавно. Но как его потом юзать в запросах?
|
|||
9
youalex
20.11.20
✎
13:15
|
(7) Да, там Реквизит+Измерения, Измерение штатно выбросить нельзя, увы.
|
|||
10
ДенисЧ
20.11.20
✎
13:15
|
(8) Зачем тебе запрос по логам?
|
|||
11
H A D G E H O G s
20.11.20
✎
13:19
|
(0) Автор, помни, кстати, как только ты имеешь РС с 2 и более измерениями и НаборЗаписей.Записать(Истина), ты можешь столкнуться с загадочным ожиданием на блокировке.
|
|||
12
H A D G E H O G s
20.11.20
✎
13:19
|
(10) Действительно, глупость какая.
|
|||
13
Новиков
20.11.20
✎
13:23
|
(4) Если в измерении стоит > 1 документа, то в типовых сделано где как:
- где просто составной тип, - где определяемый тип, который сам по себе составной. (8) Пост.обработкой, как еще? Получил датасет, преобразуй уникальный идентификатор обратно к документу. Я слыхал так запариваются те, кто логи куда-то складывает отдельно - эластики и прочее. ХЗ, насколько это актуально для ТС. |
|||
14
youalex
20.11.20
✎
13:26
|
(13) не, там просто Новый УникальныйИдентификатор(), он с данными никак не связан.
|
|||
15
mistеr
20.11.20
✎
13:44
|
(10) Ладно запрос, но зачем "изменение записей при проведении документов"?
|
|||
16
H A D G E H O G s
20.11.20
✎
13:46
|
Я бы сделал составным Измерением ссылку на док.
Ну че там такого - лишние 5 байт в индексе. Зато удобно и кластерно. |
|||
17
Новиков
20.11.20
✎
14:14
|
(11) >>и НаборЗаписей.Записать(Истина), ты можешь столкнуться с загадочным ожиданием на блокировке.
В типовых тяжелые РС, статусы доков и подобное, именно так и пишутся, с Истиной. |
|||
18
H A D G E H O G s
20.11.20
✎
14:17
|
(17) Ну может там одно измерение.
1С накладывает упр. блокировку на область набора записей, по которой не задан отбор с Записать(Истина). Чтобы не было фантомов. Записать(Ложь) не допустит фантома на уровне вставки в индекс СУБД. Вроде так. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |