что дедупликация данных в этом режиме не работает. Можете, пожалуйста, подсказать, а что здесь подразумевается под дедупликацией данных, может на примере?
Клик дедублицирует данные если они в одном окне, как я помню в 100 строчках, если там есть дубль, то при вставке он будет удалён
а как такая ситуация вообще может произойти? только когда клиент допускает ошибку и делает 2 одинаковых запроса в базу?
Насчёт двух одинаковых запросов на вставку, clickhouse тоже может их убирать.
Ну а в целом какой основной use-case этой функциональности? Я просто пытаюсь понять, насколько критично терять дедупликацию в случае async_insert. Имеется ли тут в виду какие-то особенности работы, например, репликации по нескольким серверам, когда в результате репликации может появиться 2 одинаковых ряда
Я не работал с async_insert
Data blocks are deduplicated. For multiple writes of the same data block (data blocks of the same size containing the same rows in the same order), the block is only written once. The reason for this is in case of network failures when the client application does not know if the data was written to the DB, so the INSERT query can simply be repeated. It does not matter which replica INSERTs were sent to with identical data. INSERTs are idempotent. Deduplication parameters are controlled by merge_tree server settings
А если тот блок, который я вставил, смержился в один парт, дедупликация уже не сработает?
работает. там хранятся контрольные суммы последних 100 инсертов, парты не играют роли https://kb.altinity.com/altinity-kb-schema-design/insert_deduplication/
Это работает только если таблица реплицируемая?
https://kb.altinity.com/altinity-kb-schema-design/insert_deduplication/ create table test_insert ( A Int64 ) Engine=MergeTree order by A settings non_replicated_deduplication_window = 100;
Обсуждают сегодня