更新变更
更新变更是指通过更新操作来修改表数据的 ALTER 查询。最典型的就是 ALTER TABLE UPDATE 这类查询。执行此类查询会生成数据片段(data parts)的新变更版本。这意味着,对于变更之前已插入的所有数据,这些语句都会触发对整个数据片段的重写,从而产生大量写请求。
参考资料
对于更新操作,可以通过使用 ReplacingMergeTree 或 CollapsingMergeTree 等专用表引擎来替代默认的 MergeTree 表引擎,从而避免产生大量写请求。
ALTER TABLE ... UPDATE 语句
根据指定的过滤表达式对匹配的数据进行操作。实现形式为变更(mutation)。
注意
ALTER TABLE 前缀使得此语法与大多数支持 SQL 的其他系统不同。其目的是表明,与 OLTP 数据库中的类似查询不同,这是一个开销较大的操作,并非为高频使用而设计。
filter_expr 必须为 UInt8 类型。该查询会将满足 filter_expr 结果为非零值的行中指定列的值更新为对应表达式的值。值通过 CAST 运算符转换为列类型。不支持更新用于计算主键或分区键的列。
一个查询可以包含多个命令,用逗号分隔。
查询处理的同步方式由 mutations_sync 设置控制。默认情况下为异步。
另请参阅