184 похожих чатов

Добрый вечер, нужна подсказка или что почитать по сжатию данных

кликхауса
интересен конфиг <compression> и какие параметры как влияют, может кто разбирал

Есть большое желание как-то снизить размер данных на диске, а заодно понять как этот блок можно использовать и к чему это приводит.

Наверно первый вопрос, можно ли на рабочей БД поменять тип сжатия на zstd и потом вернуть дефолт (Вопрос в том, насколько безопасно менять тип сжатия, не повредятся ли данные)?

9 ответов

9 просмотров

Не надо трогать его, лучше крутите сжатие отдельных колонок профитп будет больше

Ничего страшного не случится, если данные пожаты разными методами. Все прочитается успешно.

там вроде все понятно из описания? Проблем поменять туда сюда нет, но менять надо на обеих репликах как можно более одновременно

Витя-Сергеев Автор вопроса
Denny [Altinity]
там вроде все понятно из описания? Проблем поменят...

Возможно мне просто сложно понять) Хм, но кажется раза с 10 понял, но не до конца. "Минимальный размер части таблицы" Что за часть и как она определяется, первая мысль была про партицию. Сейчас появилось другое понимание: Например 2 case: У одного минимальный размер части 10.000 У второго 40.000 Если в таблице 100.000 строк, он для 80.000 использует второй кейс а для оставшихся первый? Если в таблицу прилетит ещё 20.000 записей он возьмет те 20.000 из первого кейса, сложит с новыми и сожмет по второму(40к) кейс?

Витя Сергеев
Возможно мне просто сложно понять) Хм, но кажется ...

каждый инсерт создает парт уровня _0. после n insert-в образуется n партов _0. шедулер мержей анализирует постоянно, и в какой-то момент принимает решение, m первых партов пора cмержить в единый парт, получается парт уровня _1 парты разных уровней постоянно мержатся из мелких в крупные все это в рамках ОДНОЙ партиции и так все продолжается пока размер партов не достигнет макс. размера 150ГБ. И например мерж решает помержить 6 каких-от партов, считает общий размер этих партов, если размер больше 100000000, то жмем ZSTD, меньше LZ4 , таким образом все парты со временем становятся пожатыми ZSTD, пока они маленькие и постоянно ре-мержатся в более крупные, они пожаты LZ4. для _0 используется размер несжатого парта

Витя-Сергеев Автор вопроса
Denny [Altinity]
каждый инсерт создает парт уровня _0. после n inse...

посмотрел, самый большой парт с именем 202107_21608_37058_24_29583, получается он пережил 29583 мерждой?

Витя-Сергеев Автор вопроса
Denny [Altinity]
каждый инсерт создает парт уровня _0. после n inse...

вот на самом деле с таким объяснением и запросом с получением этих партов сильно понятнее стало )

Витя Сергеев
посмотрел, самый большой парт с именем 202107_2160...

202107 -- партиция _21608 -- начальный блок (автоинкремент) _37058 -- конечный блок _24 уровень мержа _29583 -- версия мутации

Витя Сергеев
посмотрел, самый большой парт с именем 202107_2160...

_29583 -- мутации / alter table update / delete -- это путь в никуда.

Похожие вопросы

Обсуждают сегодня

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
А дальше что?.. Записать в файл, потом в Код?.. И потом разбирать как-то?..
Хаскель Моисеевич Гопник
14
доброго времени. db, dw и прочие исполняются при трансляции или при выполнении программы?
lutayyy
10
Почему никто не подсказал, что можно объявить свои типы данных, в которых меньше полей, чем в отданном джейсоне, и добавлять их по необходимости?
Strange Rabbit
10
Хтось використовував Vapor на Windows?
Jaroshevskii
15
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Карта сайта