Усечение и вставка в базу данных ClickHouse - PullRequest
0 голосов
/ 25 августа 2018

У меня есть особый сценарий, когда мне нужно урезать и пакетно вставить в таблицу в СУБД ClickHouse каждые 30 минут или около того. Я не смог найти ссылку на параметр truncate в ClickHouse.

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

В связи с этим у меня есть несколько вопросов.

  1. Как это достигается? Какова последовательность шагов в этом процессе?
  2. Что происходит с другими запросами, такими как Выберите в то время, когда таблица отбрасывается и воссоздается?
  3. Сколько времени обычно занимает удаление и воссоздание таблицы в ClickHouse?
  4. Есть ли лучший и чистый способ, которым это может быть достигнуто?

1 Ответ

0 голосов
/ 26 августа 2018

Как это достигается?Какова последовательность шагов в этом процессе?

TRUNCATE поддерживается.Теперь нет необходимости удалять и заново создавать таблицу.

Что происходит с другими запросами, такими как Select, во время удаления и повторного создания таблицы?

Это зависит от того, какой движок стола вы используете.Для семейства деревьев слияния вы получаете поведение, подобное снимку, для SELECT.

Сколько времени обычно занимает удаление таблицы и ее воссоздание в ClickHouse?

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

Есть ли лучший и чистый способ, которым это может быть достигнуто?

Я предлагаю использовать partitons со столбцом (DateTime / 60) (в минуту) вместе с пользовательским скриптом, который постоянно выполняет сбор разделов для устаревших разделов.

...