架构:

ACCOUNT_USAGE

LOCK_WAIT_HISTORY 视图

此 Account Usage 视图包括等待锁定的 事务 的历史记录。有关详细信息,请参阅 使用 LOCK_WAIT_HISTORY 视图分析被阻止的事务

OBJECT_ID

NUMBER

事务等待锁定的阻止对象(例如表)的内部/系统生成的标识符。

LOCK_TYPE

VARCHAR

锁定的类型。有效值为 PARTITIONSTREAMTABLEROW。对于混合表锁显示 ROW

OBJECT_NAME

VARCHAR

事务等待锁定的对象(例如表)的标识符。混合表锁显示 ROW

SCHEMA_ID

NUMBER

事务等待锁定的对象架构的内部/系统生成的标识符。对于混合表显示 0

SCHEMA_NAME

VARCHAR

事务等待锁定的对象架构的标识符。对于 ROW 锁显示 NULL。

DATABASE_ID

NUMBER

事务等待锁定的对象数据库的内部/系统生成的标识符。

DATABASE_NAME

VARCHAR

事务等待锁定的对象的数据库的标识符。

QUERY_ID

VARCHAR

等待锁定的 SQL 语句的内部/系统生成的标识符。

TRANSACTION_ID

NUMBER

采用等待锁定的语句的 事务的内部/系统生成的标识符。可以与 QUERY_HISTORY 视图 联接,以获取有关事务中语句的更多详细信息。

REQUESTED_AT

TIMESTAMP_LTZ

等待锁定的事务请求锁定的时间戳。

ACQUIRED_AT

TIMESTAMP_LTZ

持有锁定的事务获取锁定的时间戳。

BLOCKER_QUERIES

VARIANT

JSON array of objects. Each object is a blocker query with the following properties:

  • is_snowflake: TRUE if the query is a background process run by Snowflake (e.g., automatic maintenance of materialized views).

  • query_id: Query ID of the current statement in the blocker transaction that blocked the statement. Empty if is_snowflake is true.

  • transaction_id: ID of the blocker transaction. Empty if is_snowflake is true.

这个数组中最多可以有 20 个对象。

使用说明

  • blocker_queries 数组中返回的第一个阻止程序查询 ID 是以下查询的 ID:等待锁定的事务开始等待时在持有锁定的事务中执行的查询。请注意,在阻止程序事务中,该查询之前的查询也可能获得了锁定,因此应进行调查。

  • 输出中的每行代表一项等待锁定的事务。请注意,该事务之前可能还有其他事务在等待相同的锁定。

示例

查找过去 24 小时内所有请求了锁定的已阻止事务:

SELECT query_id, object_name, transaction_id, blocker_queries
  FROM SNOWFLAKE.ACCOUNT_USAGE.LOCK_WAIT_HISTORY
  WHERE requested_at >= DATEADD('hours', -24, CURRENT_TIMESTAMP());
Copy

有关其他示例,请参阅 使用 LOCK_WAIT_HISTORY 视图分析被阻止的事务

语言: 中文