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

Привет. Подскажите кто и как добавляет новые колонки в таблицах

с последующим заполнением историческими данными? Искал лучшие практики, но ничего не нашел толком.

Объясню подробнее ситуацию. Есть одна колонка, в которой хранится огромный JSON с разными данными, который хорошо сжат. По мере необходимости, когда определенные данные становятся часто используемыми, чтобы не выполнять JSONExtract каждый раз, потому что он работает долго, из этих данных делается отдельная колонка, у которой DEFAULT значение это JSONExtract нужных данных.
Так вот, если просто добавить так колонку, то исторические данные, которые уже раньше присутствовали в этом JSON-е по сути не запишутся физически на диск, и запросы все так же будут отрабатывать долго. Для решения этой проблемы я выполняю OPTIMIZE FINAL, но по мере роста таблицы, этот оптимайз выполняется все дольше и дольше. Второй вариант, это делать INSERT INTO new_table SELECT * FROM source_table, так данные тоже физически запишутся, но выполняется все так же очень долго, плюс надо иметь всегда места в два раза больше чем занимают таблица.

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

Подскажите кто и как поступает в таких ситуациях.

2 ответов

12 просмотров

alter table update col = col where 1

L-de Funes Автор вопроса

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта