在 ClickHouse Cloud 上使用 Memory 表引擎时,数据不会在所有节点之间复制 (这是设计使然) 。为保证所有查询都路由到同一节点,并让 Memory 表引擎按预期工作,可以采用以下任一方式:
- 在同一会话中执行所有操作
- 使用采用 TCP 或原生接口 (这会启用对粘性连接的支持) 的客户端,例如 clickhouse-client
GLOBAL IN (参见“IN 运算符”一节) 。
可以指定上下限来限制 Memory 引擎表的大小,从而使其能够充当环形缓冲区 (参见 引擎参数) 。
引擎参数
min_bytes_to_keep— 当内存表设置了大小上限时,需保留的最小字节数。- 默认值:
0 - 需要
max_bytes_to_keep
- 默认值:
max_bytes_to_keep— 内存表中保留的最大字节数;每次插入时都会删除最旧的行 (即环形缓冲区) 。如果添加大块时,需删除的最旧一批行会使结果低于min_bytes_to_keep限制,则最大字节数可能会超过 указанное 限制。- 默认值:
0
- 默认值:
min_rows_to_keep— 当内存表设置了大小上限时,需保留的最小行数。- 默认值:
0 - 需要
max_rows_to_keep
- 默认值:
max_rows_to_keep— 内存表中保留的最大行数;每次插入时都会删除最旧的行 (即环形缓冲区) 。如果添加大块时,需删除的最旧一批行会使结果低于min_rows_to_keep限制,则最大行数可能会超过 указанное 限制。- 默认值:
0
- 默认值:
compress- 是否压缩内存中的数据。- 默认值:
false
- 默认值:
用法
bytes 和 rows 这两个上限参数可以同时设置,不过最终会遵循 max 和 min 中较小的限制值。