跳到主要内容
跳到主要内容

删除突变

删除突变指的是通过删除操作来操纵表数据的 ALTER 查询。最值得注意的是,它们是诸如 ALTER TABLE DELETE 等查询。执行此类查询将生成数据部件的新突变版本。这意味着此类语句将触发对突变之前插入的所有数据进行整个数据部件的重写,从而转化为大量的写入请求。

信息

对于删除操作,您可以通过使用专门的表引擎(如 ReplacingMergeTreeCollapsingMergeTree)而不是默认的 MergeTree 表引擎来避免这些大量的写入请求。

ALTER TABLE ... DELETE 语句

ALTER TABLE [db.]table [ON CLUSTER cluster] DELETE WHERE filter_expr

删除与指定过滤表达式匹配的数据。作为 突变 实现。

注意

ALTER TABLE 前缀使此语法与大多数其他支持 SQL 的系统不同。它旨在表明,与 OLTP 数据库中的类似查询不同,这是一个不适合频繁使用的重量级操作。ALTER TABLE 被认为是重量级操作,需要合并底层数据才能删除。对于 MergeTree 表,请考虑使用 DELETE FROM 查询,它执行轻量级删除,速度可能快得多。

filter_expr 必须是 UInt8 类型。该查询删除表中此表达式取非零值的行。

一个查询可以包含多个以逗号分隔的命令。

查询处理的同步性由 mutations_sync 设置定义。默认情况下,它是异步的。

另请参阅