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

Всем привет! Есть широкая таблица с несколькмим колонками String в

которую уже неколько лет пишутся данные. Данные - разные, но значения в этих колонках из ограниченного множества.
Насколько больно преобразовывать из обычной колонки в LowCardinality и стоит ли оно того?

ALTER TABLE table
MODIFY COLUMN column LowCardinality(String),

4 ответов

11 просмотров

достаточно больно, но это того стоит. выигрыш может быть весьма значительный особенно если кардинальность в пределах блоках действительно небольшая сколько у вас там данных в байтах на диске по колонкам из system.columns? фактически у вас по объему чтения \ записи на диск это будет равносильно OPTIMIZE TABLE FINAL

Denis-Dorozhkin Автор вопроса
Slach [altinity]
достаточно больно, но это того стоит. выигрыш може...

На одном шарде так compressed 485,166,083,254 uncomressed 5,669,734,195,840 Ну сжатие ориентировочно на порядок идет

Denis Dorozhkin
На одном шарде так compressed 485,166,083,254 unco...

То есть пол терабайта на шард диски сколько последовательное чтение выдают? место есть свободное? как вариант можно попробовать протестировать INSERT INTO table_with_low_cardinality_schema SELECT FROM table WHERE ... и сравнить что будет на выходе и как влияет в общем достаточно больно будет, но прососать должно можно поиграться с background_schedule_pool_size чтобы оно не сильно много потоков одновременно запустило. но это замедлит конвертацию... по идее чтение при этом не должно прерываться... и таблица вроде бы не блокируется

Denis-Dorozhkin Автор вопроса

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
9
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Карта сайта