Перейти к основному содержанию

Вопрос

Я записываю данные в ClickHouse Cloud и хочу при чтении быть уверенным, что получаю самую актуальную и полную информацию.

Ответ

Подключение к тому же узлу

Если вы используете собственный протокол или сеанс для записи/чтения, то должны быть подключены к одной и той же реплике: в этом случае вы читаете напрямую с узла, в который записываете данные, поэтому чтение всегда будет согласованным.

Подключение к случайному узлу

Если вы не можете гарантировать, что обращаетесь к одному и тому же узлу (например, если обращаетесь к узлу через HTTPS-запросы, которые распределяет балансировщик нагрузки), вы можете либо: A)
  1. записать данные
  2. подключиться к другой реплике
  3. выполнить SYSTEM SYNC REPLICA db.table_name LIGHTWEIGHT
  4. прочитать последние данные
См. справку по командам SYSTEM ИЛИ B) выполнять чтение в любой момент с последовательной согласованностью
SELECT 
...
SETTINGS select_sequential_consistency = 1
Обратите внимание: при использовании ClickHouse Cloud и его движка таблиц SharedMergeTree по умолчанию параметр insert_quorum_parallel не требуется — все вставки в SharedMergeTree по умолчанию являются quorum inserts. Использование SYSTEM SYNC REPLICAS или select_sequential_consistency увеличит нагрузку на ClickHouse Keeper и может снизить производительность в зависимости от нагрузки на сервис. Рекомендуется выполнять запись и чтение в рамках одного и того же сеанса или через собственный протокол (sticky connection).
Последнее изменение 10 июня 2026 г.