которую уже неколько лет пишутся данные. Данные - разные, но значения в этих колонках из ограниченного множества.
Насколько больно преобразовывать из обычной колонки в LowCardinality и стоит ли оно того?
ALTER TABLE table
MODIFY COLUMN column LowCardinality(String),
достаточно больно, но это того стоит. выигрыш может быть весьма значительный особенно если кардинальность в пределах блоках действительно небольшая сколько у вас там данных в байтах на диске по колонкам из system.columns? фактически у вас по объему чтения \ записи на диск это будет равносильно OPTIMIZE TABLE FINAL
На одном шарде так compressed 485,166,083,254 uncomressed 5,669,734,195,840 Ну сжатие ориентировочно на порядок идет
То есть пол терабайта на шард диски сколько последовательное чтение выдают? место есть свободное? как вариант можно попробовать протестировать INSERT INTO table_with_low_cardinality_schema SELECT FROM table WHERE ... и сравнить что будет на выходе и как влияет в общем достаточно больно будет, но прососать должно можно поиграться с background_schedule_pool_size чтобы оно не сильно много потоков одновременно запустило. но это замедлит конвертацию... по идее чтение при этом не должно прерываться... и таблица вроде бы не блокируется
Спасибо большое! Будем тестить
Обсуждают сегодня