架构:

ACCOUNT_USAGE

TABLE_STORAGE_METRICS 视图

此 Account Usage 视图显示表级存储利用率信息,用于计算账户中每个表的存储计费,包括已删除但仍会产生存储成本的表。

除了表元数据之外,该视图还显示为每个表计费的存储字节数。Snowflake 将字节分为以下几类:

  • 活动字节,表示表中可查询的数据。

  • 由于尚未从系统中清除而仍在产生存储费用的已删除字节。这些字节分为以下子类别:

    • Time Travel 中的字节(即最近删除,但仍在表的 Time Travel 保留期内)。

    • 故障安全中的字节(即已删除的字节,这些字节已超过 Time Travel 保留期,但在表的故障安全期限内)。

    • 为克隆保留的字节(即不再处于 Time Travel 或故障安全中但仍保留的已删除字节,因为表的克隆引用了这些字节)。

换言之,行将在此视图中维护,直到不再对相应的表进行任何存储计费,而不管表中的数据可能处于何种状态(即活动、Time Travel、故障安全或为克隆保留)。

有关表中数据存储的更多详细信息,请参阅 数据存储注意事项

列名称

数据类型

描述

ID

NUMBER

内部/系统生成的表标识符。

TABLE_NAME

TEXT

表的名称。

TABLE_SCHEMA_ID

NUMBER

内部/系统生成的表架构标识符。

TABLE_SCHEMA

TEXT

表所属的架构。

TABLE_CATALOG_ID

NUMBER

内部/系统为表的数据库生成的标识符。

TABLE_CATALOG

TEXT

表所属的数据库。

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

该表所拥有(并向其计费)的字节数,这些字节在删除后保留,因为它们被此表的一个或多个克隆引用。

DELETED

BOOLEAN

如果表已从存储中清除,则为 TRUE。

TABLE_CREATED

TIMESTAMP_LTZ

创建表的日期和时间。

TABLE_DROPPED

TIMESTAMP_LTZ

删除表的日期和时间。如果表尚未删除,则设置为 NULL。

TABLE_ENTERED_FAILSAFE

TIMESTAMP_LTZ

表(如果已删除)进入故障安全状态或 NULL 的日期和时间。在此状态下,无法使用 UNDROP 还原表。

SCHEMA_CREATED

TIMESTAMP_LTZ

创建表架构的日期和时间。

SCHEMA_DROPPED

TIMESTAMP_LTZ

删除表架构的日期和时间。

CATALOG_CREATED

TIMESTAMP_LTZ

创建表数据库的日期和时间。

CATALOG_DROPPED

TIMESTAMP_LTZ

删除表的数据库的日期和时间。

COMMENT

TEXT

为表添加注释。

INSTANCE_ID

NUMBER

对象所属实例的内部/系统生成的标识符。

使用说明

  • 视图的延迟时间最长可达 90 分钟。

  • IDCLONE_GROUP_ID

    • 表的 ID 在表的整个生命周期内不会更改,包括重命名或删除表时。

    • CLONE_GROUP_ID 是最早克隆源始的 ID,包括表已被删除但仍在累积存储成本的情况。例如:

      1. t2 是从 t1 克隆而来的。

      2. t3 是从 t2 克隆而来的。

      所有三个表都将 t1ID 列为其 CLONE_GROUP_ID,即使 t1 已被删除并最终从 Snowflake 中清除。

    • 如果 IDs 相同,则该表不是克隆。

    • 存储字节始终归最初添加字节的表所有,因此向该表计费。如果随后克隆了该表,则这些初始字节的存储指标永远不会转移到克隆,即使从源表中删除了这些字节也是如此。

  • 克隆的表共享相同的底层存储(在微分区级别),直到修改原始表或克隆表。每次对任一表进行更改时,该表都会获得更改字节的“所有权”。

  • 只要删除的表仍产生存储成本,就会显示在视图中:

    • 删除的表保留其活动存储指标,指示在还原表时将有多少字节处于活动状态。

    • 在表的 Time Travel 保留期内删除的表可以使用 UNDROP 命令来还原。

    • 已删除的处于故障安全中的表(TABLE_ENTERED_FAILSAFE 不是 NULL)可能会在大多数列中显示 NULL 值,但以下情况除外:

      ID 列:

      IDCLONE_GROUP_ID

      字节列:

      ACTIVE_BYTESTIME_TRAVEL_BYTESFAILSAFE_BYTESRETAINED_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(如果表是永久性的,则为故障安全)相关的存储成本。

  • 2018 年 8 月之前 DELETED 列中的任何数据都可能不准确。

  • 在某些情况下,活动字节可能包括已删除列数据的字节。有关详细信息,请参阅 ALTER TABLE 使用说明

语言: 中文