Snowflake历史存储成本追踪咨询:是否有内置追踪表?
Snowflake存储历史统计追踪方案
总存储成本的历史查看
Snowflake的ACCOUNT_USAGE库下STORAGE_USAGE表可查看账户级历史存储成本统计,包含每日总存储用量(涵盖数据库、阶段、失败查询等占用的存储),但无法拆分到数据库或Schema维度。
数据库/Schema级历史存储的实现方式
Snowflake没有内置原生表直接提供数据库或Schema级的历史存储大小数据,必须通过定期快照自行实现,具体操作如下:
- 创建用于存储快照数据的表:
CREATE TABLE STORAGE_HISTORY_SNAPSHOT ( SNAPSHOT_TIMESTAMP TIMESTAMP_NTZ DEFAULT CURRENT_TIMESTAMP(), DATABASE_NAME VARCHAR, SCHEMA_NAME VARCHAR, TABLE_NAME VARCHAR, STORAGE_SIZE_BIGINT, STORAGE_SIZE_GB FLOAT ); - 通过Snowflake Task创建定时任务,定期查询当前各对象存储大小并插入快照表,示例查询语句:
INSERT INTO STORAGE_HISTORY_SNAPSHOT (DATABASE_NAME, SCHEMA_NAME, TABLE_NAME, STORAGE_SIZE_BIGINT, STORAGE_SIZE_GB) SELECT TABLE_CATALOG AS DATABASE_NAME, TABLE_SCHEMA AS SCHEMA_NAME, TABLE_NAME, BYTES AS STORAGE_SIZE_BIGINT, BYTES / POWER(1024, 3) AS STORAGE_SIZE_GB FROM INFORMATION_SCHEMA.TABLE_STORAGE_METRICS WHERE TABLE_TYPE = 'BASE TABLE'; - 后续可通过查询该快照表,分析不同时间点数据库/Schema/表的存储大小变化、增长趋势等。
补充说明
- 当前存储状态可通过
INFORMATION_SCHEMA.TABLE_STORAGE_METRICS、DATABASE_STORAGE_METRICS等视图实时查看,但这些视图仅返回当前状态,无历史数据。 - 若仅需数据库级历史存储,也可基于
SHOW DATABASES结果结合DESCRIBE DATABASE的BYTES字段做快照,但使用INFORMATION_SCHEMA视图更便捷。
内容的提问来源于stack exchange,提问作者user45867
相关产品推荐
相关产品推荐

