Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Имеет ли смысл париться по поводу количества записей в таблице?

Имеет ли смысл париться по поводу количества записей в таблице?
Я
   MrAvPika
 
14.05.18 - 09:52
Есть ли смысл разделять большое количество данных по таблицам?

Например разделить остатки магазинов по регионам? (Сеть очень большая поэтому записей тоже очень много) В МСК 20 млн
 
 
   MrAvPika
 
1 - 14.05.18 - 09:52
В питере чуть меньше, в регионах больше
   Cyberhawk
 
2 - 14.05.18 - 09:53
Эскалацию словишь - задумаешься. Один из примеров.
   Cyberhawk
 
3 - 14.05.18 - 09:53
Распределенную сеть инфобаз не предлагать?
   MrAvPika
 
5 - 14.05.18 - 09:57
(2) Можно пример?
   MrAvPika
 
6 - 14.05.18 - 09:57
(2) Это не значит что для каждого города своя таблица
просто хотяб Москву и питер вынести
   Serg_1960
 
7 - 14.05.18 - 09:59
(4) Попробуйте сформулировать свою мысль так, чтобы её можно было прочитать без мата.
   MrAvPika
 
9 - 14.05.18 - 10:01
(8) Это только для веб сервиса. На уровне запроса указывается конкретный магазин, далее идет определение таблицы и запрос
   aka MIK
 
10 - 14.05.18 - 10:04
20 млн - это не много )
 
 Рекламное место пустует
   aka MIK
 
11 - 14.05.18 - 10:05
Хотя это остатки, движений думаю поболе
   arsik
 
12 - 14.05.18 - 10:05
Мне кажется субд практически пофигу сколько в таблице строк. Главное не больше максимального предела. Но тебе до него несколько десятков лет еще таблицу эту наполнять.  Скорость выборки практически не изменится. Главное правильные индексы.
   Timon1405
 
13 - 14.05.18 - 10:06
план запроса или хотя бы сам запрос в студию
   MrAvPika
 
14 - 14.05.18 - 10:06
Короче в целом вопрос такой:
Сильно ли падает производительность
20 млн записей
60
100
   ptiz
 
15 - 14.05.18 - 10:06
(14) Смотря что ты с ними делаешь.
   MrAvPika
 
16 - 14.05.18 - 10:07
(13)
Все очень просто
StoreId
GoodsId
Where
StoreId = x
   MrAvPika
 
17 - 14.05.18 - 10:07
Просто запросы и запись с отбором по магазину
   MrAvPika
 
18 - 14.05.18 - 10:07
индексировано по 2ум полям
   arsik
 
19 - 14.05.18 - 10:08
Если есть индекс по StoreId, то разделение на скорость никак не повлияет.
   MrAvPika
 
20 - 14.05.18 - 10:10
А запись с отбором по магазину
   Cyberhawk
 
21 - 14.05.18 - 10:10
(17) Структуру регистра (картинкой) и запрос в студию
   MrAvPika
 
22 - 14.05.18 - 10:11
(19)  было бы очень круто если был бы какой-то источник факта)
   Cyberhawk
 
23 - 14.05.18 - 10:11
   MrAvPika
 
24 - 14.05.18 - 10:13
(21)  картинку скинуть не могу, сейчас не за компом
Измереня
Store
Goods

Ресурсы
Quantity
Price

Реквизиты
StoreId
GoodsId

И просто плоский селект без соединений
   arsik
 
25 - 14.05.18 - 10:15
(24) Store и StoreId - это как и для чего? не проще в указать условием Store?
   ptiz
 
26 - 14.05.18 - 10:17
(24) Если при чтении и записи всегда накладывается отбор на измерение Store, то блокировок лишних не будет и делить смысла нет.
   Serg_1960
 
27 - 14.05.18 - 10:23
(13) Поддерживаю. В смысле о важности плана запроса - ссылка (много буковок в статье, но ничего лишнего, всё по делу, доступно о сложном):

"Влияние оптимизатора запросов на производительность 1с"
http://www.gilev.ru/optimquery/
   H A D G E H O G s
 
28 - 14.05.18 - 10:27
Я один задался вопросом - а сколько миллионов строк будет выбрано даже при отборе по одному магазину?
   H A D G E H O G s
 
29 - 14.05.18 - 10:28
Магазинов же не миллионы , а максимум 1000
   MrAvPika
 
30 - 14.05.18 - 10:28
(29) Москва это 10 тыс~. Регионы 5-6 тыс~
   Cyberhawk
 
31 - 14.05.18 - 10:31
(24) "просто плоский селект без соединений" // Ты точно отвечаешь на мой вопрос-запрос?
   H A D G E H O G s
 
32 - 14.05.18 - 10:32
Хрена себе. Технопоинт перешёл на 1с?
   MrAvPika
 
33 - 14.05.18 - 10:33
(31)
Выбрать
*
Из Stocks как Stcs
Где
Stcs.Store = Store

Может я не правильно понимаю вопрос?
 
 
   arsik
 
34 - 14.05.18 - 10:33
(32) Они давно на нем. Даже на кассах я помню был 1С.
   MrAvPika
 
35 - 14.05.18 - 10:36
В общем если подытожить:

Если писать с отбором по магазину блокировок не будет - логично, скорость записи тоже не меняется (check)
Если поля отбора индексированы, то время запроса не увеличивается вне зависимости от размера таблицы (1 таблица, без соединений) (check)
   MrAvPika
 
36 - 14.05.18 - 10:36
Все согласны?
   Cyberhawk
 
37 - 14.05.18 - 10:37
(33) Ну раз в условиях запроса есть условие на первое (по порядку) измерение регистра, тогда не все так плохо. Нет смысла разделять таблицу (с точки зрения какой-то там производительности), если конечно ты не хочешь положить таблицу для Мск / Спб на быстрые диски, например.
https://its.1c.ru/db/v8std#content:-2145782995:hdoc
   Cyberhawk
 
38 - 14.05.18 - 10:38
Но че-то раньше ты писал в (16), что условие не на измерение, а на реквизит регистра
   Timon1405
 
39 - 14.05.18 - 10:39
разве в плане запроса (33) "выбрать все" не будет скана?
   MrAvPika
 
40 - 14.05.18 - 10:39
(38) Они тоже индексированы
   MrAvPika
 
41 - 14.05.18 - 10:40
(39) мне было лень писать все поля, звездочку я не использую, с телефона сложно писать
   aka MIK
 
42 - 14.05.18 - 10:42
(35) ну время записи с индексами немного возрастает
(39) с чего бы
   aka MIK
 
43 - 14.05.18 - 10:43
У меня в одной из табличек 1.2 млрд записей - все норм выбирается, если по индексу разумеется
   Cyberhawk
 
44 - 14.05.18 - 10:44
(40) Так реквизит регистра не используется в таблице остатков. Ты из какой таблицы выбираешь записи?
   MrAvPika
 
45 - 14.05.18 - 10:47
   MrAvPika
 
46 - 14.05.18 - 10:48
пример регистра*
   Cyberhawk
 
47 - 14.05.18 - 10:48
(45) Ну это ты в (24) написал, Я верю. Ты текст запроса не показал
   Cyberhawk
 
48 - 14.05.18 - 10:49
Если запрос к основной таблице с условием по реквизиту, то почему не заменить его запросом к таблице остатков с условием по измерению? Накуя у тебя в реквизитах регистра реквизиты объектов БД, ссылки на которые сидят в измерениях?
   MrAvPika
 
49 - 14.05.18 - 10:52
(48) Думал так будет лучше, чтоб не обращаться через точку, типа исключить левое соединение со справочником.
 
 Рекламное место пустует
   MrAvPika
 
50 - 14.05.18 - 10:53
(48) Я неправильно думаю?)
   Cyberhawk
 
51 - 14.05.18 - 10:54
(49) Зачем левое соединение? Формируй список ссылок и условие на измерение В
   Базис
 
52 - 14.05.18 - 11:04
(32) Но как, Холмс?
   Serg_1960
 
53 - 14.05.18 - 11:04
(50) Не знаю как ты думаешь :) Но, если запрос к основной таблице по неиндексированному реквизиту - то Clustered Index Scan, иначе - Clustered Index Seek (+Nested Loops). Две большие разницы.

А если запрос к виртуальным таблицам остатков/оборотов - то там нет реквизитов (только измерения и ресурсы) и нет смысла "в дублировании" измерений в реквизитах.
   MrAvPika
 
54 - 14.05.18 - 11:05
(53) Виртуальных таблиц не будет, плоский, индексированный по всем полям, регистр сведений
   H A D G E H O G s
 
55 - 14.05.18 - 11:05
(53) Nested Loops при кластерном индексе - лишнее.
   Cyberhawk
 
56 - 14.05.18 - 11:19
(54) Ну тогда учитывай, что реквизиты перед измерениями в индексе идут. В таблицах БД позырь, в каком порядке твои реквизиты идут в платформенных индексах
   Serg_1960
 
57 - 14.05.18 - 11:20
(55) Эээ... может быть и не прав, но там ДВА индекса в запросе участвуют.
   Serg_1960
 
58 - 14.05.18 - 11:30
(54) Остатки в регистре сведений? Эээ... без комментариев :)
   Cyberhawk
 
59 - 14.05.18 - 11:32
(58) Так это пади у него срез регистра накопления регламентом формируется для выгрузки на сайт и помещается в этот отдельный регистр сведений, и сайт спокойно забирает
   Serg_1960
 
60 - 14.05.18 - 11:34
(59) Ах, да, sorry, забыл. Замечание снимается :)
   Serg_1960
 
61 - 14.05.18 - 11:41
+(56) "Индексы таблиц базы данных"

https://its.1c.ru/db/metod8dev#content:1590:hdoc:spr
   xXeNoNx
 
62 - 14.05.18 - 12:27
(39) "Вы не понимаете о чем пишите"(с)
   xXeNoNx
 
63 - 14.05.18 - 12:36
Подытожу: Разносить ничего не надо по таблицам(если не используется какой-то хитрый замысел), нужно попадать в индексы и использовать максимальные отборы, следить что бы не было эскалации (вроде 100к записей для ms sql)


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует