с репликами
вставил две строки с одинаковым набором полей из order by, делаю запрос с final, получаю две строки, ожидаю одну
нашёл похожий запрос на гите с ответом
Merge combines parts over partition. If you have duplicates in different partitions or at different servers they will not be removed / merged.
данные лежат в одной партиции, получается если они попали на разные сервера, то дубли не удалятся?
Первое обновитесь до последней версии 22.3, второе покажите ddl и что вы вставили
обновление в процессе ddl create table table_replica ( timestamp DateTime, account_id UInt64, application_id UInt64, platform Enum8(...), type Enum8(...), count UInt64 ) engine = ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/{database}/{table}', '{replica}') PARTITION BY toYYYYMMDD(timestamp) ORDER BY (timestamp, account_id, application_id) SETTINGS storage_policy = 'waterfall', index_granularity = 8192; строки 2022-10-01 00:00:00|1000|100|TYPE_SMTH|TYPE_AAA|225132 2022-10-01 00:00:00|1000|100|TYPE_SMTH|TYPE_AAA|245840
сделайте select hostName(), * from clusterAllReplicas('{cluster}', default.table_replica) без final для начала надо понять, как действительно эти две строки раскидало по нодам
получил 4 записи с разных хостов 2 строки из примера на разных шардах + их реплики
ок, по дефолту дедупликация в ReplacingMergeTree идёт в рамках партиции на ноде select final дополнительно умеет удалять дубликаты из разных партиций (есть настройка do_not_merge_across_partitions_select_final, чтобы тюнить это поведение) в выборке, но вроде удалять дубликаты из разных нод не обучен. местные знатоки меня поправят, если неправ
Обсуждают сегодня