架构:

ACCOUNT_USAGE

TABLE_STORAGE_METRICS 视图

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

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

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

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

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

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

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

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

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

列名称

数据类型

描述

ID

NUMBER

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

TABLE_NAME

VARCHAR

表的名称。

TABLE_SCHEMA_ID

NUMBER

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

TABLE_SCHEMA

VARCHAR

表所属的架构。

TABLE_CATALOG_ID

NUMBER

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

TABLE_CATALOG

VARCHAR

表所属的数据库。

CLONE_GROUP_ID

NUMBER

此表的最早克隆源始的唯一标识符。如果表不是克隆,则与 ID 相同。

IS_TRANSIENT

VARCHAR

如果表是瞬态表或临时表,则为“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.

DELETED

BOOLEAN

如果表已删除或重新创建,则为 TRUE。

TABLE_CREATED

TIMESTAMP_LTZ

创建表的日期和时间。

TABLE_DROPPED

TIMESTAMP_LTZ

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

TABLE_ENTERED_FAILSAFE

TIMESTAMP_LTZ

表(如果已删除)进入故障安全状态或 NULL 的日期和时间。在此状态下,无法使用 UNDROP 恢复表。对于无法使用故障安全恢复的瞬态表,此列表示 Time Travel 保留期何时已过。

SCHEMA_CREATED

TIMESTAMP_LTZ

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

SCHEMA_DROPPED

TIMESTAMP_LTZ

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

CATALOG_CREATED

TIMESTAMP_LTZ

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

CATALOG_DROPPED

TIMESTAMP_LTZ

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

COMMENT

VARCHAR

为表添加注释。

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 使用说明

  • 对于 Iceberg 表:

    • Snowflake 不会对 Iceberg 表 存储收费。有关更多信息,请参阅 Iceberg 表账单

    • 如果该表在外部管理,并使用 行级删除,则此视图可能显示不准确的存储利用率信息。

语言: 中文