删除变更(Delete Mutations)
删除变更(delete mutations)是指通过删除操作来修改表数据的 ALTER 查询。最典型的例子是 ALTER TABLE DELETE 这类查询。执行此类查询会生成数据 part 的变更后新版本。这意味着,对于变更发生前已写入的所有数据,此类语句都会触发整个数据 part 的重写,从而产生大量写入请求。
参考资料
对于删除操作,你可以使用诸如 ReplacingMergeTree 或 CollapsingMergeTree 等专用表引擎来替代默认的 MergeTree 表引擎,从而避免产生大量写入请求。
ALTER TABLE ... DELETE 语句
删除与指定过滤表达式匹配的数据。该操作以变更(mutation)的形式实现。
注意
ALTER TABLE 前缀使此语法不同于大多数支持 SQL 的其他系统。其设计目的是表明,与 OLTP 数据库中的类似查询不同,这是一个开销较大的操作,不适合频繁使用。ALTER TABLE 被视为重量级操作,要求在删除之前对底层数据进行合并。对于 MergeTree 表,建议考虑使用 DELETE FROM 查询,它执行轻量级删除,通常会快得多。
filter_expr 必须是 UInt8 类型。查询会删除表中该表达式取非零值的行。
一个查询可以包含多个用逗号分隔的命令。
查询执行的同步方式由 mutations_sync 设置控制。默认情况下,它是异步的。
另请参阅