如何知道数据何时被插入 clickhouse
How to know when data has been inserted in clickhouse
我了解到 clickhouse 是最终一致的。因此,一旦插入调用 returns,并不意味着数据将出现在 select 查询中。
- 这是否适用于独立的 Clickhouse(无分发,无复制)?
- 我了解数据复制的最终一致性概念,但它是否适用于分发但不适用复制?
- 使用分布式+复制的 clickhouse,要知道可以安全查找某些插入的推荐方法是什么?
基本上我没有找到太多关于这个主题的信息,所以也许我不是在问最好的问题。不吝赐教。
- 不,但单节点设置也不应该被认为是可靠的。
- 默认情况下是的,您将插入客户端连接到的节点(可能通过某些负载均衡器)并且分布式 table 将异步转发每条数据到它所属的节点。
insert_distributed_sync=1
设置会让客户端同步等待。
- 插入时直接使用
***MergeTree
分片tables(非分布式)设置insert_quorum=2
(如果有3个副本)和如果存在一些错误,则使用完全相同的批次无限重试(可以在重试时使用不同的副本,因为存在基于批次哈希的重复数据删除)。然后在读取时使用 select_sequential_consistency=1
设置。
我了解到 clickhouse 是最终一致的。因此,一旦插入调用 returns,并不意味着数据将出现在 select 查询中。
- 这是否适用于独立的 Clickhouse(无分发,无复制)?
- 我了解数据复制的最终一致性概念,但它是否适用于分发但不适用复制?
- 使用分布式+复制的 clickhouse,要知道可以安全查找某些插入的推荐方法是什么?
基本上我没有找到太多关于这个主题的信息,所以也许我不是在问最好的问题。不吝赐教。
- 不,但单节点设置也不应该被认为是可靠的。
- 默认情况下是的,您将插入客户端连接到的节点(可能通过某些负载均衡器)并且分布式 table 将异步转发每条数据到它所属的节点。
insert_distributed_sync=1
设置会让客户端同步等待。 - 插入时直接使用
***MergeTree
分片tables(非分布式)设置insert_quorum=2
(如果有3个副本)和如果存在一些错误,则使用完全相同的批次无限重试(可以在重试时使用不同的副本,因为存在基于批次哈希的重复数据删除)。然后在读取时使用select_sequential_consistency=1
设置。