Массивное обновление таблицы

126 views
Skip to first unread message

Max Lapshin

unread,
Oct 10, 2016, 8:59:15 AM10/10/16
to ClickHouse
Спроектировали табличку и конечно же допустили нелепую ошибку в тех данных, которые мы в неё писали 3 месяца.

Теперь хотим поправить, терять данные не хочется.


Я собираюсь сделать это следующим образом:

1) переименовать таблицу в таблицу2
2) начать лить правильные данные в таблицу
3) начать переливать данные из таблицы2 в таблицу с параллельным апдейтом самих данных
4) после этого дропнуть таблицу2


Правильно ли это?

Не станет ли плохо новой таблице из-за того, что я в неё лью поток данных, с прыгающим primary key?

Ведь я не могу сделать UPDATE mytable SET a=...  ?

man...@gmail.com

unread,
Oct 11, 2016, 4:16:36 PM10/11/16
to ClickHouse
Решение правильное.

Данные из старой таблицы можно перелить с помощью INSERT SELECT.
От прыгающего primary key не станет плохо за исключением случаев, когда вставляются данные за большое количество разных "партиций" (в качестве партиций используется месяц) - то есть, за несколько лет вперемешку. Это связано с тем, что вставляемые данные разбиваются по партициям, и на каждую партицию есть некоторые константные издержки.

Скорее всего, во время такого INSERT SELECT, замедлятся другие вставки в таблицу.

Да, UPDATE отсутствует.
Reply all
Reply to author
Forward
0 new messages