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

删除分区

背景

在首次通过 PARTITION BY 子句定义表时,指定了分区。该子句可以包含对任何列的 SQL 表达式,其结果将定义一行发送到哪个分区。

数据的分片在磁盘上与每个分区逻辑上关联,并可以单独查询。在下面的示例中,我们使用表达式 toYear(CreationDate) 按年分区 posts 表。随着行被插入到 ClickHouse 中,该表达式将针对每一行进行评估,并在目标分区存在时路由到相应分区(如果这一行是某年的第一行,则该分区将被创建)。

阅读关于设置分区表达式的章节 如何设置分区表达式

在 ClickHouse 中,用户应该主要将分区视为数据管理功能,而不是查询优化技术。通过基于键逻辑地分隔数据,每个分区可以独立操作,例如被删除。这允许用户高效地在存储层之间移动分区,因此子集,也可过期数据/高效地从集群中删除

删除分区

ALTER TABLE ... DROP PARTITION 提供了一种经济高效的方式来删除整个分区。

该查询将分区标记为非活动状态,并完全删除数据,约需 10 分钟。该查询是复制的 - 它在所有副本上删除数据。

在下面的示例中,我们通过删除相关分区来删除 2008 年的帖子。