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 |
该表所拥有(并向其计费)的字节数(处于该表的活动状态)。 |
TIME_TRAVEL_BYTES |
NUMBER |
该表所拥有(并向其计费)的字节数(处于该表的 Time Travel 状态)。 |
FAILSAFE_BYTES |
NUMBER |
该表所拥有(并向其计费)的字节数(处于该表的故障安全状态)。 |
RETAINED_FOR_CLONE_BYTES |
NUMBER |
该表所拥有(并向其计费)的字节数,这些字节在删除后保留,因为它们被此表的一个或多个克隆引用。 |
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 使用说明。