删除变更
删除变更是指通过删除操作操纵表数据的 ALTER
查询。最显著的是像 ALTER TABLE DELETE
这样的查询。执行这些查询会产生数据片段的新变更版本。这意味着此类语句会触发对所有在变更之前插入的数据整个数据片段的重写,从而导致大量的写请求。
信息
对于删除操作,您可以通过使用专门的表引擎,如 ReplacingMergeTree 或 CollapsingMergeTree,来避免这些大量的写请求,而不是使用默认的 MergeTree 表引擎。
ALTER TABLE ... DELETE 语句
删除与指定过滤表达式匹配的数据。实现为 mutation。
备注
ALTER TABLE
前缀使得该语法与大多数支持 SQL 的其他系统不同。它意在表明,与 OLTP 数据库中的类似查询不同,这是一项繁重的操作,不适合频繁使用。 ALTER TABLE
被视为一项重量级操作,在删除之前需要先合并底层数据。对于 MergeTree 表,考虑使用 DELETE FROM
查询,它执行轻量级删除,并且可以显著更快。
filter_expr
必须是 UInt8
类型。该查询删除在表中此表达式取非零值的行。
一个查询可以包含多个用逗号分隔的命令。
查询处理的同步性由 mutations_sync 设置定义。默认情况下,它是异步的。
另请参见