You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redshift表大小查询:按指定日期范围获取特定表的大小(MB)

Redshift 查询特定日期范围内数据的大小(MB单位)

场景1:按日期分区的表

如果你的表是按日期字段分区的,可以直接通过系统表svv_table_partitions获取对应分区的存储大小,转换为MB单位:

查询各分区大小

SELECT 
  tablename,
  partition,
  ROUND(size / 1024.0 / 1024.0, 2) AS size_mb
FROM svv_table_partitions
WHERE 
  schemaname = 'your_schema_name'
  AND tablename = 'your_table_name'
  -- 将分区字符串转换为日期,匹配输入的DD-MM-YYYY格式
  AND to_date(partition, 'DD-MM-YYYY') BETWEEN to_date('25-07-2021', 'DD-MM-YYYY') AND to_date('24-09-2022', 'DD-MM-YYYY')
ORDER BY partition;

查询总大小(汇总所有符合条件的分区)

SELECT 
  tablename,
  ROUND(SUM(size) / 1024.0 / 1024.0, 2) AS total_size_mb
FROM svv_table_partitions
WHERE 
  schemaname = 'your_schema_name'
  AND tablename = 'your_table_name'
  AND to_date(partition, 'DD-MM-YYYY') BETWEEN to_date('25-07-2021', 'DD-MM-YYYY') AND to_date('24-09-2022', 'DD-MM-YYYY')
GROUP BY tablename;

场景2:非分区表

非分区表没有单独的分区大小记录,需要通过估算来计算特定日期范围内数据的大小:

WITH table_overview AS (
  -- 获取整个表的总大小和总行数
  SELECT 
    pg_total_relation_size('your_schema_name.your_table_name') AS total_bytes,
    COUNT(*) AS total_rows
  FROM your_schema_name.your_table_name
),
filtered_data AS (
  -- 获取符合日期条件的行数
  SELECT COUNT(*) AS filtered_row_count
  FROM your_schema_name.your_table_name
  WHERE your_date_column BETWEEN to_date('25-07-2021', 'DD-MM-YYYY') AND to_date('24-09-2022', 'DD-MM-YYYY')
)
-- 基于平均行大小估算目标数据的大小
SELECT 
  ROUND((total_bytes * filtered_row_count)::FLOAT / total_rows / 1024 / 1024, 2) AS estimated_size_mb
FROM table_overview, filtered_data;

注意事项

  • 替换your_schema_name、your_table_name和your_date_column为你实际的 schema、表名和日期字段名
  • 非分区表的结果为估算值,因为每行数据的存储大小可能存在差异
  • 访问svv_table_partitions需要相应的系统权限,确保你的账号有权限查询该表
  • 日期转换时,to_date的第二个参数必须和输入的日期字符串格式严格匹配(这里是DD-MM-YYYY)

内容的提问来源于stack exchange,提问作者Ritwick Pandey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:20:27