删除分区
背景
在通过 PARTITION BY 子句初始定义表时指定分区。此子句可以包含对任何列的 SQL 表达式,其结果将定义行发送到哪个分区。
数据片段在逻辑上与磁盘上的每个分区相关联,可以单独查询。以下示例中,我们使用表达式 toYear(CreationDate) 按年对 posts 表进行分区。当行插入到 ClickHouse 中时,将针对每行评估此表达式,并在存在的情况下将其路由到结果分区(如果该行是某年的第一行,则将创建该分区)。
阅读关于设置分区表达式的部分 如何设置分区表达式。
在 ClickHouse 中,用户应主要将分区视为数据管理功能,而不是查询优化技术。通过根据关键字逻辑地分离数据,每个分区都可以独立操作,例如删除。这使得用户可以在时间或 过期数据/从集群有效删除 之间有效地移动分区及其子集,进而在 存储层 之间移动。
删除分区
ALTER TABLE ... DROP PARTITION 提供了一种具有成本效益的方式来删除整个分区。
此查询将分区标记为非活动状态并完全删除数据,约需 10 分钟。该查询是复制的 – 它在所有副本上删除数据。
在下面的示例中,我们通过删除相关分区来移除 2008 年的帖子。