3 шарда, в каждом 2 реплики. Далее вставляю в таблицу 1000 записей. Делаю COUNT() в табице — количество записей верное — 1000. Выполняю запрос
SELECT
FQDN() AS h,
COUNT()
FROM entries
GROUP BY h
Получаю вот такой результат:
─h──────────────────────────┬─count()─┐
│ example-cluster-node-01-02 │ 329 │
│ example-cluster-node-03-01 │ 311 │
│ example-cluster-node-02-02 │ 360 │
└────────────────────────────┴─────────┘
Тоже всё верно по количеству.
Но при выполнении запроса
SELECT
FQDN() AS h,
COUNT()
FROM clusterAllReplicas('example_cluster', test, entries)
GROUP BY h
Получаю результат, в котором данные между репликами отличаются:
┌─h──────────────────────────┬─count()─┐
│ example-cluster-node-01-02 │ 1316 │
│ example-cluster-node-02-01 │ 1440 │
│ example-cluster-node-03-01 │ 933 │
│ example-cluster-node-03-02 │ 933 │
│ example-cluster-node-01-01 │ 658 │
│ example-cluster-node-02-02 │ 720 │
└────────────────────────────┴─────────┘
Причём отличаются ровно в 2 раза, и каждый раз результат разный: то у одной группы реплик разница в 2 раза, то у двух групп.
В чём проблема?
entries distributed таблица?
Да, конечно
Надо к mergetree делать запрос через clusterAllReplicas
Создавалась вот так: CREATE TABLE IF NOT EXISTS test.entries AS test.entries_shard ENGINE = Distributed(example_cluster, test, entries_shard, murmurHash3_64(parameter));
Так я, вроде, так и делаю в своём примере выше, где данные по репликам отличаются
clusterAllReplicas(example_cluster, test.entries_shard)
🤦 спасибо, не то запрашивал
Обсуждают сегодня