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