TABLE_STORAGE_METRICS 视图¶
此视图显示表级存储利用率信息,用于计算账户中每个表的存储账单,包括已删除但仍会产生存储成本的表。
除了表元数据之外,该视图还显示为每个表计费的存储字节数。Snowflake 将字节分为以下几类:
活动字节,表示表中可查询的数据。
由于尚未从系统中清除而仍在产生存储费用的已删除字节。这些字节分为以下子类别:
Time Travel 中的字节(即最近删除,但仍在表的 Time Travel 保留期内)。
故障安全中的字节(即已删除的字节,这些字节已超过 Time Travel 保留期,但在表的故障安全期限内)。
为克隆保留的字节(即不再处于 Time Travel 或故障安全中但仍保留的已删除字节,因为表的克隆引用了这些字节)。
换言之,行将在此视图中维护,直到不再对相应的表进行任何存储计费,而不管表中的数据可能处于何种状态(即活动、Time Travel、故障安全或为克隆保留)。
有关表中数据存储的更多详细信息,请参阅 数据存储注意事项。
备注
要查询此视图,必须使用 ACCOUNTADMIN 角色。该视图对其他视图可见,可以进行查询,但查询不会返回任何行。
列¶
列名称 |
数据类型 |
描述 |
---|---|---|
TABLE_CATALOG |
TEXT |
表所属的数据库。 |
TABLE_SCHEMA |
TEXT |
表所属的架构。 |
TABLE_NAME |
TEXT |
表的名称。 |
ID |
NUMBER |
表的唯一标识符。 |
CLONE_GROUP_ID |
NUMBER |
此表的最早克隆源始的唯一标识符。如果表不是克隆,则与 ID 相同。 |
IS_TRANSIENT |
TEXT |
如果表是瞬态表或临时表,则为“YES”,否则为“NO”。瞬态表和临时表没有故障安全期。 |
ACTIVE_BYTES |
NUMBER |
该表所拥有(并向其计费)的字节数(处于该表的活动状态)。对于 Iceberg 表存储,活动字节不计入 Iceberg 表的费用。有关更多信息,请参阅 Iceberg 表账单。 |
TIME_TRAVEL_BYTES |
NUMBER |
该表所拥有(并向其计费)的字节数(处于该表的 Time Travel 状态)。 |
FAILSAFE_BYTES |
NUMBER |
该表所拥有(并向其计费)的字节数(处于该表的故障安全状态)。 |
RETAINED_FOR_CLONE_BYTES |
NUMBER |
Bytes owned by (and billed to) this table that are retained after deletion because they are referenced by one or more clones of this table, or by WORM snapshots that contain the table. |
TABLE_CREATED |
TIMESTAMP_LTZ |
创建表的日期和时间。 |
TABLE_DROPPED |
TIMESTAMP_LTZ |
删除表的日期和时间。如果表尚未删除,则设置为 NULL。 |
TABLE_ENTERED_FAILSAFE |
TIMESTAMP_LTZ |
表(如果已删除)进入故障安全状态或 NULL 的日期和时间。在此状态下,无法使用 UNDROP 还原表。 |
CATALOG_CREATED |
TIMESTAMP_LTZ |
创建包含表的数据库的日期和时间。 |
CATALOG_DROPPED |
TIMESTAMP_LTZ |
删除包含表的数据库的日期和时间。 |
SCHEMA_CREATED |
TIMESTAMP_LTZ |
创建包含表的架构的日期和时间。 |
SCHEMA_DROPPED |
TIMESTAMP_LTZ |
删除包含表的架构的日期和时间。 |
COMMENT |
TEXT |
为表添加注释。 |
使用说明¶
更新
active_bytes
、time_travel_bytes
、failsafe_bytes
和retained_for_clone_bytes
的存储相关统计信息时可能会有 1-2 小时的延迟。ID 和 CLONE_GROUP_ID:
表的 ID 在表的整个生命周期内不会更改,包括重命名或删除表时。
CLONE_GROUP_ID 是最早克隆源始的 ID,包括表已被删除但仍在累积存储成本的情况。例如:
表
t2
是从t1
克隆而来的。表
t3
是从t2
克隆而来的。
所有三个表都将
t1
的 ID 列为其 CLONE_GROUP_ID,即使t1
已被删除并最终从 Snowflake 中清除。如果 ID 和 CLONE_GROUP_ID 相同,则该表不是克隆。
存储字节始终归最初添加字节的表所有,因此向该表计费。如果随后克隆了该表,则这些初始字节的存储指标永远不会转移到克隆,即使从源表中删除了这些字节也是如此。
克隆的表共享相同的底层存储(在微分区级别),直到修改原始表或克隆表。每次对任一表进行更改时,该表都会获得更改字节的“所有权”。
只要删除的表仍产生存储成本,就会显示在视图中:
删除的表保留其活动存储指标,指示在还原表时将有多少字节处于活动状态。
在表的 Time Travel 保留期内删除的表可以使用 UNDROP 来还原。
已删除的处于故障安全中的表(TABLE_ENTERED_FAILSAFE 不是 NULL)可能会在大多数列中显示 NULL 值,但以下情况除外:
- ID 列:
ID、CLONE_GROUP_ID
- 字节列:
ACTIVE_BYTES、TIME_TRAVEL_BYTES、FAILSAFE_BYTES、RETAINED_FOR_CLONE_BYTES
无法使用 UNDROP 还原这些表。
从 Time Travel 保留期为 0 天的表中删除数据时,异步后台进程会清除活动字节或将其直接移动到故障安全存储中,具体取决于表类型。这可能需要很短的时间就会完成。在此期间,即使 Time Travel 保留期为 0 天,
TIME_TRAVEL_BYTES
列也可能包含非零值。FAILSAFE_BYTES
表示已超出 Time Travel 的字节。所有这些字节都向当前表计费。如果 TABLE_NAME 列中的多行具有相同的值,则表示该表存在多个版本。每次删除表并创建同名新表时,都会创建一个版本,包括在现有表上发出 CREATE OR REPLACE TABLE 命令时。请注意,当前版本的 TABLE_DROPPED 列将具有 NULL 值;所有其他版本将具有时间戳值。请务必注意这一点,因为表的每个版本都会产生与 Time Travel(如果表是永久性的,则为故障安全)相关的存储成本。
在某些情况下,活动字节可能包括已删除列数据的字节。有关更多信息,请参阅 ALTER TABLE 使用说明。
对于 Iceberg 表:
Snowflake 不会对 Iceberg 表 存储收费。有关更多信息,请参阅 Iceberg 表账单。
如果该表在外部管理,并使用 行级删除,则此视图可能显示不准确的存储利用率信息。