|
максимальная производительность при получении остатков | ☑ | ||
---|---|---|---|---|
0
Kulikov_12
13.01.16
✎
14:00
|
добрый день!
1С Предприятие 8.3, конфигурация УТ 10.3 Есть регистр накопления - остатки, его измерения: 1. Контрагент 2. Склад 3. Номенклатура 4. ДокументПартии -------------- нужна максимальная производительность, все поля Не индексированы. по умолчанию в Таблице Остатков в SQL Server генерируется только один кластерный индекс. кластерный индекс - это Период + Измерение1 + ... + ИзмерениеN. в запросах на получение остатков отбор измерений задается в порядке следования так, как он задан в конфигураторе (кластерный индекс) т.е. запрос выглядит следующим образом ВЫБРАТЬ Остатки.ДокументПартии, Остатки.КоличествоОстаток, ИЗ РегистрНакопления.ПартииТоваров.Остатки(&Дата, Контрагент = &Контрагент И Склад = &Склад И Номенклатура В (&Номенклатура)) КАК Остатки заполнено только одно измерение 1.Контрагент либо измерение 2.Склад, сразу два этих измерения заполненными быть не могут. вопрос. если объединить эти два измерения в одно, увеличит ли это скорость получения остатков? какие плюсы, и минусы? измерение Контрагент имеет тип 'СправочникСсылка.Контрагенты' измерение Склад имеет тип 'СправочникСсылка.Склады' вопрос актуален в связи с большим объемом данных, любое увеличение быстродействия даже на 5% уже хорошо. |
|||
1
Kulikov_12
13.01.16
✎
14:41
|
с точки зрения быстродействия, как будет лучше объединить эти два измерения в одно, или оставить разделенными?
желательно развернутый ответ. заранее спасибо! |
|||
2
vicof
13.01.16
✎
14:47
|
Индекс-то есть, а его обслуживание регулярно делается?
|
|||
3
Лефмихалыч
13.01.16
✎
14:47
|
каким образом ты собираешься объединять два измерения в одно?
|
|||
4
Лефмихалыч
13.01.16
✎
14:49
|
Если ты собираешься добавить измерение составного типа, то попрощайся с производительностью - кластерный индекс при наличии отборов на это измерение использоваться не будет.
|
|||
5
Лефмихалыч
13.01.16
✎
14:50
|
и это... большой объем данных - это сколько?
|
|||
6
Kulikov_12
13.01.16
✎
14:53
|
(2) это новый регистр. сейчас идет ввод в эксплуатацию
я понимаю что важно, но сейчас хочу сразу сделать систему такой, чтобы она работала максимально быстро... т.к. объем данных очень большой :) контрагенты, у которых хранится наш товар 200 шт. наши склады, 50 шт. номенклатура, по которой мы торгуем, списываем со склада и обмениваемся с контрагентами, 20 000 шт. документов, образующих новые партии, в месяц 10 000 и больше |
|||
7
Ник второй
13.01.16
✎
14:54
|
(6) Копейки.... купите нормальныйсервер
|
|||
8
Живой Ископаемый
13.01.16
✎
14:54
|
просто добавить памяти и загнать ка можно больший кусок базы в буферпул
|
|||
9
Kulikov_12
13.01.16
✎
14:54
|
(3) сделать измерение составного типа
'СправочникСсылка.Контрагенты' 'СправочникСсылка.Склады' |
|||
10
Лефмихалыч
13.01.16
✎
14:55
|
(6) пфф! и всё?..
|
|||
11
Лефмихалыч
13.01.16
✎
14:55
|
(9) ни в коем случае этого не делай. Составной тип - зло кипучее для производительности.
|
|||
12
Kulikov_12
13.01.16
✎
14:56
|
(4) >>кластерный индекс при наличии отборов на это измерение использоваться не будет.
почему? это же составный тип из ссылок, не число, строка, и т.д., т.е. ссылочный тип, по нему разве кластерный индекс не будет строиться? |
|||
13
Лефмихалыч
13.01.16
✎
15:00
|
(12) строиться индекс будет, но отборы по этому полю будут транслированы в злоебучий "when then else", при одном взгляде на который оптимизатор устало скажет: "а, идите в допу - тэйбл скан!"
|
|||
14
Kulikov_12
13.01.16
✎
15:02
|
(7) спасибо, но пока вроде бы на стадии внедрения всё работает быстро, расчет себестоимости за 1 месяц по всему холдингу (200 контрагентов) делается в пределах суток.
но просто озадачился быстродействием, и хочу понять, что быстрее в моем случае, объединить 2 измерения и сделать одно составного типа, или оставить как есть :) |
|||
15
Лефмихалыч
13.01.16
✎
15:02
|
в общем, чтобы задумываться об вопросах производительности надо сначала научиться пользоваться технологическим журналом и хотя бы просто на раз прочитать "настольную книгу эксперта" или хотя бы под подушку ее положить. Без этих знаний все твои потуги - пальцем в небо и суета.
|
|||
16
H A D G E H O G s
13.01.16
✎
15:03
|
(13) нет, если задать не только ссылку но и тип отбора.
|
|||
17
Лефмихалыч
13.01.16
✎
15:03
|
(14) сколько записей в регистре твоем?
|
|||
18
Kulikov_12
13.01.16
✎
15:03
|
(13) спасибо вам большое! теперь понял. с вами согласен.
|
|||
19
Лефмихалыч
13.01.16
✎
15:04
|
(16) эмм... пример покажешь?
|
|||
20
H A D G E H O G s
13.01.16
✎
15:04
|
Регистр.ИзмерениеСкладКонтрагент ССЫЛКА Справочник.Склады и Регистр.ИзмерениеСкладКонтрагент=&Склад
|
|||
21
Лефмихалыч
13.01.16
✎
15:05
|
(20) да ладно! И с "В" поможет, и с отбором по реквизитам?
|
|||
22
Лефмихалыч
13.01.16
✎
15:05
|
хотя с отобором по реквизитам кластер при любом раскладе не будет использоваться
|
|||
23
H A D G E H O G s
13.01.16
✎
15:06
|
(20) С "В" не пробовал. Отбор по реквизитам делайте потом, когда Остатки во временную поместите.
|
|||
24
Kulikov_12
13.01.16
✎
15:11
|
(17) >>сколько записей в регистре твоем?
ВЫБРАТЬ КОЛИЧЕСТВО(*) ИЗ РегистрНакопления.ПартииТоваров за 3 месяца - 20 млн. |
|||
25
FIXXXL
13.01.16
✎
15:17
|
на два регистра разнести?
по типу свои остатки и остатки коммисионеров |
|||
26
Kulikov_12
13.01.16
✎
15:26
|
(25) кстати да, очень хорошая идея. надо подумать. спасибо!
|
|||
27
Eugene_life
13.01.16
✎
15:28
|
(24) Плохо придется базе под реальной нагрузкой. По партиям же и себестоимость считается.. Очень скоро (после года эксплуатации) себестоимость будет за месяц считаться несколько суток. Может быть, вытащить детализацию в какую-то внешнюю таблицу, а в самом регистре хранить итоговые значения? например, за 3 дня или неделю. А детализацию до операции - во внешней таблице, и обращаться к ней только при необходимости..
|
|||
28
Kulikov_12
13.01.16
✎
15:44
|
(27) да, регистр предназначен для расчета себестоимости списанного (проданного) товара
ресурсы соответственно Количество, и Стоимость. при списании делается запрос на получении остатков в разрезе Документов партий, и эти партии списываются по FIFO ВЫБРАТЬ Остатки.ДокументПартии, Остатки.КоличествоОстаток, Остатки.СтоимостьОстаток, ИЗ РегистрНакопления.ПартииТоваров.Остатки(&Дата, Контрагент = &Контрагент И Склад = &Склад И Номенклатура В (&Номенклатура)) КАК Остатки |
|||
29
Kulikov_12
13.01.16
✎
15:45
|
(27) >>Может быть, вытащить детализацию в какую-то внешнюю таблицу, а в самом регистре хранить итоговые значения?
это как, у нас в регистре ведь итак хранятся обычные движения документов, а остатки хранятся в отдельной таблице остатков... |
|||
30
Kulikov_12
13.01.16
✎
15:52
|
(27) после расчета себестоимости по каждой списанной (проданной) номенклатуре, эти данные выгружаются в Бухгалтерию, и там они уже свернуты по документу одной строчкой.
было продано Иванову товара на сумму 100 тыс. руб., себестоимость проданного товара 70 тыс. руб. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |