|
columnstore новичковый вопрос
|
|||
---|---|---|---|
#18+
Никогда не работал с columnstore, прошу совета. Есть простая таблица из четырех интов (два small) в которую по больше миллиона записей в день будут заливать. Очень уж она хорошо жмется в columnstor формате, и предназначена для визуализации только, никаких обновлений. Сами данные обычно актуальны в районе месяца, дальше крайне редкие обращения возможны. На тестовых данных вижу, что есть задержка (порядка секунды) при первом обращении к данным, скорее всего связанная с кешированием. Последующие обращения происходят быстрее. Совершенно не знаю как columnstor кешируется и вообще как с ним работает сервер. Имеет ли смысл для того, что бы в память помещались последние несколько дней данных, допустим, партицировать её? Какие чанки имеет смысл рассматривать? Может быть проще не делить, но тогда она будет больше нескольких гигов в год расти. Я не админю это, но представляю геморой с большими таблицами. Заранее спасибо за мысли ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 05:38 |
|
columnstore новичковый вопрос
|
|||
---|---|---|---|
#18+
1. Доступ к колоночному индексу всегда осуществляется только одним способом: он сканируется целиком (ну, или в рамках партиции, если, сервер понимает, что можно сделать исключение секций). 2. Собственно, поэтому и первоначальная "задержка" - вся таблица подбрасывается в память, если там для этого есть место. И поэтому потом - быстрее. 3. Прелесть в таком поведении, безусловно, есть, т.к. колоночный индекс сжимает хранящиеся данные раз в 8-10, при хорошем раскладе, и, например, если раньше таблица занимала 600Гб, и категорически не влезала в память, даже частями, то теперь - меньше 60 Гб, и влезает туда со свистом. Все запросы ускорились в 100 раз, и это - не фигура речи (из собственной памяти). 4. Да, партиционировать имеет смысл, если в запросах явным образом будет фигурировать ключ партиционирования, ограничивая набор секций, который будет просматриваться. 5. Иногда, партиционировать имеет смысл и по другим соображениям, прежде всего это - массовая загрузка данных в рядомстоящую таблицу, а потом включение ее в основную таблицу в виде секции. Позволяет блокировать основной поток читателей из таблицы не более чем на секунды switch partition. Причем в 2017-19 появилось еще и "ленивое переключение" - можно подождать, пока закончатся все мешающие запросы, а потом - переключиться. 6. Не делить проще, запросы компилируются быстрее, и, если исключение секций в запросе невозможно (или не бывает) - то и выполняется быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 08:05 |
|
columnstore новичковый вопрос
|
|||
---|---|---|---|
#18+
PizzaPizza, 1) С обновлением записей там все плохо, но, если у вас не будет такой операции, то ок. 2) Предусмотрите секционирование, чтобы удалять ненужное, иначе все удаленные записи будут все равно лежать в таблице. 3) Возможно, вам придется использовать диспетчер ресурсов, иначе 4-5 запросов к такой таблице могут сожрать всю оперативку Это из тех особенностей, что в встречал ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 14:37 |
|
columnstore новичковый вопрос
|
|||
---|---|---|---|
#18+
uaggster Доступ к колоночному индексу всегда осуществляется только одним способом: он сканируется целиком (ну, или в рамках партиции, если, сервер понимает, что можно сделать исключение секций). Нет, во-первых, columnstore индекс хранится сегментами и есть механизм segment elimination во-вторых, columnstore хранится поколоночно, и доступ идет только к данным полей из запроса в-третьих, внутри columnstore есть справочники, причем как на уровне сегмента так и секции, обращения к которым идет не всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 14:51 |
|
columnstore новичковый вопрос
|
|||
---|---|---|---|
#18+
Спасибо всем за идеи. Значит буду делать партиции. Выборки там как раз по ключу партиции. Осталось только определиться с размером, что бы комфортно в память влезало. Как я понимаю никаких иных механизмов тонкой настройки этого индекса пока нет в сервере. msLexесть механизм segment elimination Спасибо за наводку, погляжу на segment skipped когда буду размеры партиций подбирать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 17:45 |
|
columnstore новичковый вопрос
|
|||
---|---|---|---|
#18+
PizzaPizza, А зачем колоночный, может достаточно сжатия? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 17:59 |
|
columnstore новичковый вопрос
|
|||
---|---|---|---|
#18+
Владислав Колосов PizzaPizza, А зачем колоночный, может достаточно сжатия? Columnstore очень хорошо жмет некоторые виды данных (я не про типы а про распределение) и, судя по первому посту, это один из тех случаем Отсутсnвуют update а удаления только секциям Если на этих данных еще и гоняют аналитические запросы, то CS прям создан для этого кейса ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 19:21 |
|
columnstore новичковый вопрос
|
|||
---|---|---|---|
#18+
msLex uaggster Доступ к колоночному индексу всегда осуществляется только одним способом: он сканируется целиком ( ну, или в рамках партиции, если, сервер понимает, что можно сделать исключение секций ). Нет, во-первых, columnstore индекс хранится сегментами и есть механизм segment elimination А выделенное не читаем? :-) msLexво-вторых, columnstore хранится поколоночно, и доступ идет только к данным полей из запроса в-третьих, внутри columnstore есть справочники, причем как на уровне сегмента так и секции, обращения к которым идет не всегда. На плане, операции с колоночным индексом всегда присутствуют только в одном варианте: сканирование индекса. Хотя, в принципе вы правы, правильнее писать: сканирование [i]колонок [/i ]индекса. Они всегда просматриваются целиком (ну, или в рамках секции, если исключение секций - возможно). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 07:45 |
|
columnstore новичковый вопрос
|
|||
---|---|---|---|
#18+
uaggster А выделенное не читаем? :-) Вы разницу между секциями и сегментами замечаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 09:12 |
|
columnstore новичковый вопрос
|
|||
---|---|---|---|
#18+
msLex Вы разницу между секциями и сегментами замечаете? А. Понял. Про это Не знал, честно говоря. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2021, 12:44 |
|
|
start [/forum/topic.php?fid=46&msg=40066433&tid=1684761]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 155ms |
0 / 0 |