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

Добрый день. Подскажите где почитать принцип работы TTL для таблицы? Навесили на

таблицу TTL
ALTER TABLE table MODIFY TTL ActionDate + toIntervalMonth(6) и получил высокую загрузку диска + кучу дополнительных system.merges
В таблице данных только за последние 4 месяца, TTL выставлен на 6 месяцев, логично было бы предположить, что ничего не будет происходить, однако клик загружен 💯

10 ответов

8 просмотров

https://clickhouse.com/docs/en/operations/settings/settings#ttl_only_drop_parts

Vitaly-Ivanov Автор вопроса
Slach [altinity]
https://clickhouse.com/docs/en/operations/settings...

Кажется, проблема в чем-то другом, у меня SETTINGS ttl_only_drop_parts = 1 и кажется это должно снижать нагрузку в процессе удаления, но у меня TTL 6 месяцев, а данных только 4, т.е. ничего не должно происходить. Создается впечатление как буд-то кликхаус помечает каждую строку в отдельности в исторических данных когда ей надо быть удаленной; Я только сегодня установил ТТЛ

Vitaly Ivanov
Кажется, проблема в чем-то другом, у меня SETTING...

он не помечает строку, но он проверяет условие TTL и фильтрует строки, либо удаляет парт целиком... при мерже партов SELECT * FROM system.merges FORMAT Vertical что показывает ?

Vitaly-Ivanov Автор вопроса
Slach [altinity]
он не помечает строку, но он проверяет условие TTL...

вот таких примерно 10 строк elapsed: 8126.720571642 progress: 0.5164301050749575 num_parts: 1 source_part_names: ['202306_6_6_0'] result_part_name: 202306_6_6_0_68 source_part_paths: [‘/XXX/202306_6_6_0/'] result_part_path: /XXX/202306_6_6_0_68/ partition_id: 202306 is_mutation: 1 total_size_bytes_compressed: 131193953627 total_size_marks: 77684 bytes_read_uncompressed: 346867230903 rows_read: 328335360 bytes_written_uncompressed: 346813428453 rows_written: 328335360 columns_written: 0 memory_usage: 490956444 thread_id: 97 merge_type: merge_algorithm:

Vitaly Ivanov
вот таких примерно 10 строк elapsed: ...

progress: 0.51 rows_read: 328 335 360 total_size_bytes_compressed: 131 193 953 627 ну то есть у вас мерж по 0.6 милларда строк в результирующем парте, с необходимостью прочитать под нагрузкой 130 гигабайт (и записать примерно столько же) и вы жалетутесь почему у вас 10 потоков которые должны суммарно переписать 2.6 (1.3+1.3) терабайта, работают уже целых 2.5 часа? по моему все ок... можно ограничить максимальный размер парта в 50 гигов... наверное https://clickhouse.com/docs/en/operations/settings/merge-tree-settings#max-bytes-to-merge-at-max-space-in-pool парты будут чуть меньше... но 50 гигов тоже нормальный размер...

Vitaly-Ivanov Автор вопроса
Slach [altinity]
progress: 0.51 rows_read: ...

Но почему? Почему? Надо прочитать и записать все данные чтобы установить TTL? Я просто не понимаю как это работает, казалось бы зачем трогать данные которые младше чем TTL?

Vitaly Ivanov
Но почему? Почему? Надо прочитать и записать все д...

еще раз, TTL это декларативное условие применямое для фильрации строк в background merge background merge итак сделается с чего вы решили вообще что ваш этот конкретный merge из-за TTL?

Vitaly-Ivanov Автор вопроса
Slach [altinity]
еще раз, TTL это декларативное условие применямое ...

Потому что мержи начались сразу после того как я выполнил ALTER TABLE table MODIFY TTL ActionDate + INTERVAL 6 MONTH и только на этой шарде, на остальных такого нет, никто не обращается к 202306 партиции, отсюда и вывод что это MODIFY TTL как-то что-то делает с данными. Он кстати не завершился еще is_initial_query: 1 user: default query_id: 5fd23a3d-a5eb-4fd9-8097-c9cceb68b985 address: ::ffff:172.17.0.1 port: 52398 initial_user: default initial_query_id: 5fd23a3d-a5eb-4fd9-8097-c9cceb68b985 initial_address: ::ffff:172.17.0.1 initial_port: 52398 interface: 1 client_name: ClickHouse client_revision: 54461 client_version_major: 23 client_version_minor: 1 client_version_patch: 3 http_method: 0 http_user_agent: http_referer: forwarded_for: quota_key: distributed_depth: 0 elapsed: 9076.79912438 is_cancelled: 0 is_all_data_sent: 0 read_rows: 0 read_bytes: 0 total_rows_approx: 0 written_rows: 0 written_bytes: 0 memory_usage: 8388630 peak_memory_usage: 8388630 query: ALTER TABLE table MODIFY TTL ActionDate + INTERVAL 6 MONTH; thread_ids: [6503] ProfileEvents: {'Query':1,'ArenaAllocChunks':27,'ArenaAllocBytes':110592,'FunctionExecute':36,'ZooKeeperTransactions':27206,'ZooKeeperList':2,'ZooKeeperCreate':4,'ZooKeeperExists':18126,'ZooKeeperGet':9068,'ZooKeeperMulti':6,'ContextLock':347,'RWLockAcquiredReadLocks':31} Settings: {'max_query_size':'2621440','distributed_connections_pool_size':'2048','use_uncompressed_cache':'1','distributed_directory_monitor_sleep_time_ms':'300000','distributed_directory_monitor_max_sleep_time_ms':'3600000','distributed_directory_monitor_batch_inserts':'1','load_balancing':'random','distributed_aggregation_memory_efficient':'1','log_queries':'1','joined_subquery_requires_alias':'0','max_bytes_before_external_group_by':'5000000000','max_bytes_before_external_sort':'5000000000','max_ast_elements':'500000','readonly':'0','max_memory_usage':'15000000000','background_pool_size':'64'} current_database: default

Vitaly Ivanov
Потому что мержи начались сразу после того как я в...

видимо у вас MATERIALIZE TTL происходит... Тем боле что у вас он уже было, надо вашу ActionDate пересчитать для этого... для всех партов...

Vitaly-Ivanov Автор вопроса
Slach [altinity]
видимо у вас MATERIALIZE TTL происходит... Тем бол...

Спасибо! #ttl применение MATERIALIZE TTL вызвало ошибку latest_fail_reason: Code: 47. DB::Exception: Missing columns: 'Number1' 'ActionAt' 'AppID' 'Number2' 'Action' 'ComID' 'Datacenter' 'AfID' while processing query: 'SELECT ActionDate, Action, toStartOfFiveMinute(ActionAt), AfID, ComID, AppID, Datacenter, count(), sum(Number1), sum(Number2) GROUP BY ActionDate, Action, toStartOfFiveMinute(ActionAt), AfID, ComID, AppID, Datacenter', required columns: 'ActionDate' 'AfID' 'Datacenter' 'ComID' 'Action' 'Number2' 'AppID' 'ActionAt' 'Number1' 'ActionDate' 'AfID' 'Datacenter' 'ComID' 'Action' 'Number2' 'AppID' 'ActionAt' 'Number1'. (UNKNOWN_IDENTIFIER) (version 22.8.15.23 (official build)) ошибка возникла при SETTING materialize_ttl_recalculate_only=1 если поставить materialize_ttl_recalculate_only=0 и заново выполнить ALTER то процесс продолжается Спасибо! Теперь более менее понятно что происходит в целом, жаль что не работает materialize_ttl_recalculate_only=1

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
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
Карта сайта