如何知道数据何时被插入 clickhouse

How to know when data has been inserted in clickhouse

我了解到 clickhouse 是最终一致的。因此,一旦插入调用 returns,并不意味着数据将出现在 select 查询中。

  1. 这是否适用于独立的 Clickhouse(无分发,无复制)?
  2. 我了解数据复制的最终一致性概念,但它是否适用于分发但不适用复制?
  3. 使用分布式+复制的 clickhouse,要知道可以安全查找某些插入的推荐方法是什么?

基本上我没有找到太多关于这个主题的信息,所以也许我不是在问最好的问题。不吝赐教。

  1. 不,但单节点设置也不应该被认为是可靠的。
  2. 默认情况下是的,您将插入客户端连接到的节点(可能通过某些负载均衡器)并且分布式 table 将异步转发每条数据到它所属的节点。 insert_distributed_sync=1设置会让客户端同步等待。
  3. 插入时直接使用***MergeTree分片tables(分布式)设置insert_quorum=2(如果有3个副本)和如果存在一些错误,则使用完全相同的批次无限重试(可以在重试时使用不同的副本,因为存在基于批次哈希的重复数据删除)。然后在读取时使用 select_sequential_consistency=1 设置。