Vertica 12.0集群如何查看数据表各分区大小?
Vertica 12.0查看分区表各分区占用空间的方法
方法1:通过系统表关联查询
直接关联v_catalog.partitions和v_monitor.projection_storage系统表,获取每个分区的存储占用数据,示例SQL:
SELECT p.table_name, p.partition_key, p.partition_value, SUM(ps.used_bytes) / (1024*1024*1024) AS used_space_gb, SUM(ps.total_bytes) / (1024*1024*1024) AS total_space_gb FROM v_catalog.partitions p JOIN v_monitor.projection_storage ps ON p.projection_id = ps.projection_id WHERE p.table_name = '你的目标表名' -- 替换为实际表名 GROUP BY p.table_name, p.partition_key, p.partition_value ORDER BY used_space_gb DESC;
该查询会返回目标表每个分区的已用空间、总空间(单位为GB),并按已用空间降序排列,方便快速定位占用最大的分区。
方法2:使用专用分区存储函数
Vertica提供了PARTITION_STORAGE函数,可直接查询指定表的分区存储信息,示例SQL:
SELECT partition_key, partition_value, used_bytes / (1024*1024*1024) AS used_space_gb, total_bytes / (1024*1024*1024) AS total_space_gb FROM PARTITION_STORAGE('你的目标表名') -- 替换为实际表名 ORDER BY used_space_gb DESC;
这个方式更简洁,返回结果和方法1一致,适合快速查询场景。
额外注意事项
- 替换SQL中的
你的目标表名为实际表名称,注意表名的大小写敏感性。 - 若要同时定位最旧分区,可调整
ORDER BY子句,比如按partition_value升序排序(如果分区键是时间类型)。 - 删除分区前请确认数据已无需保留,执行
ALTER TABLE 目标表名 DROP PARTITION 分区值;即可完成删除。
内容的提问来源于stack exchange,提问作者maks
相关产品推荐
相关产品推荐

