删除分区
Background
在创建表时,通过 PARTITION BY 子句来指定分区。该子句可以包含针对任意列的 SQL 表达式,其结果将决定每一行被发送到哪个分区。
数据片段在磁盘上在逻辑上与各个分区关联,并且可以被单独查询。对于下面的示例,我们使用表达式 toYear(CreationDate) 按年份对 posts 表进行分区。当向 ClickHouse 插入行时,会对每一行计算该表达式,并将其路由到对应的分区(如果该年份尚无数据行,则会创建对应的分区)。
请参阅章节如何设置分区表达式了解如何设置分区表达式。
在 ClickHouse 中,分区原则上应被视为一种数据管理功能,而不是查询优化技术。通过基于某个键对数据进行逻辑划分,可以对每个分区进行独立操作,例如删除。这样,用户就可以根据时间在存储层级之间高效地移动分区(即数据子集),或让数据过期/从集群中高效删除数据。
删除分区
ALTER TABLE ... DROP PARTITION 提供了一种低成本的方式来删除整个分区。
此查询会将该分区标记为非活动,并在大约 10 分钟内彻底删除数据。该查询会在所有副本间复制执行,从而删除所有副本上的数据。
在下面的示例中,我们通过删除关联的分区,从前面那个表中移除 2008 年的帖子。