架构:

ACCOUNT_USAGEREADER_ACCOUNT_USAGE

QUERY_HISTORY 视图

此 Account Usage 视图可用于查询过去 365 天(1 年)内各种维度(时间范围、会话、用户、仓库等)的 Snowflake 查询历史记录。

该视图在 ACCOUNT_USAGE 和 READER_ACCOUNT_USAGE 架构中都可用,但存在以下差异:

  • 以下列 在阅读者账户视图中可用:

    • READER_ACCOUNT_NAME

    • READER_ACCOUNT_DELETED_ON

另请参阅:

/sql-reference/functions/query_history`(Information Schema 表函数):doc:/user-guide/ui-snowsight-activity`(Snowsight 仪表板)

下表中的 Reader account 列指示 QUERY_HISTORY 列在 READER_ACCOUNT_USAGE 架构中可用。

列名称

数据类型

描述

阅读者账户

reader_account_name

VARCHAR

执行 SQL 语句的阅读者账户的名称。

query_id

VARCHAR

内部/系统生成的 SQL 语句标识符。

query_text

VARCHAR

SQL 语句的文本。限制为 10 万个字符。包含超过 10 万个字符的 SQL 语句将被截断。

database_id

NUMBER

正在使用的数据库的内部/系统生成的标识符。

database_name

VARCHAR

编译时在查询上下文中指定的数据库。

schema_id

NUMBER

正在使用的架构的内部/系统生成的标识符。

schema_name

VARCHAR

编译时在查询上下文中指定的架构。

query_type

VARCHAR

DML、查询等。 如果查询失败,则查询类型可能为 UNKNOWN。

session_id

NUMBER

执行语句的会话。

user_name

VARCHAR

发出查询的用户。

role_name

VARCHAR

查询时会话中处于活动状态的角色。

warehouse_id

NUMBER

已用数据库的内部/系统生成的标识符。

warehouse_name

VARCHAR

执行查询的仓库(如果有)。

warehouse_size

VARCHAR

执行此语句时仓库的大小。

warehouse_type

VARCHAR

执行此语句时仓库的类型。

cluster_number

NUMBER

执行此语句的群集(在多群集仓库中)。

query_tag

VARCHAR

通过 QUERY_TAG 会话参数为此语句设置的查询标签。

execution_status

VARCHAR

查询的执行状态。有效值:successfailincident

error_code

NUMBER

错误代码(如果查询返回错误)

error_message

VARCHAR

错误消息(如果查询返回错误)

start_time

TIMESTAMP_LTZ

语句开始时间(本地时区)

end_time

TIMESTAMP_LTZ

语句结束时间(本地时区)。

total_elapsed_time

NUMBER

实际经过的时间(以毫秒为单位)。

bytes_scanned

NUMBER

此语句扫描的字节数。

percentage_scanned_from_cache

FLOAT

从本地磁盘缓存扫描的数据所占的百分比。该值的范围为 0.0 到 1.0。乘以 100 以得出真正的百分比。

bytes_written

NUMBER

写入的字节数(例如,加载到表中时)。

bytes_written_to_result

NUMBER

写入结果对象的字节数。 例如,select * from . . . 将生成一组表格格式的结果,表示所选内容中的每个字段。 . . 通常,结果对象表示作为查询结果生成的任何内容,BYTES_WRITTEN_TO_RESULT 表示返回结果的大小。

bytes_read_from_result

NUMBER

从结果对象读取的字节数。

rows_produced

NUMBER

此语句生成的行数。ROWS_PRODUCED 列将在未来的版本中弃用。ROWS_PRODUCED 列中的值并不总是反映受查询影响的逻辑行数。Snowflake 建议改用 ROWS_INSERTED、ROWS_UPDATED、ROWS_WRITTEN_TO、RESULTS 或 ROWS_DELETED 列。

rows_inserted

NUMBER

查询插入的行数。

rows_updated

NUMBER

查询更新的行数。

rows_deleted

NUMBER

查询删除的行数。

rows_unloaded

NUMBER

数据导出期间卸载的行数。

bytes_deleted

NUMBER

查询删除的字节数。

partitions_scanned

NUMBER

扫描的微分区数。

partitions_total

NUMBER

此查询中包含的所有表的总微分区数。

bytes_spilled_to_local_storage

NUMBER

溢出到本地磁盘的数据量。

bytes_spilled_to_remote_storage

NUMBER

溢出到远程磁盘的数据量。

bytes_sent_over_the_network

NUMBER

通过网络发送的数据量。

compilation_time

NUMBER

编译时间(以毫秒为单位)

execution_time

NUMBER

执行时间(以毫秒为单位)

queued_provisioning_time

NUMBER

由于仓库创建、恢复或调整大小,在仓库队列中等待仓库计算资源预置所花费的时间(以毫秒为单位)。

queued_repair_time

NUMBER

在仓库队列中等待仓库中的计算资源进行修复所花费的时间(以毫秒为单位)。

queued_overload_time

NUMBER

由于当前查询工作负载使仓库过载,在仓库队列中所花费的时间(以毫秒为单位)。

transaction_blocked_time

NUMBER

因并发 DML 阻止而花费的时间(以毫秒为单位)。

outbound_data_transfer_cloud

VARCHAR

将数据卸载到另一个区域和/或云的语句的目标云提供商。

outbound_data_transfer_region

VARCHAR

将数据卸载到另一个区域和/或云的语句的目标区域。

outbound_data_transfer_bytes

NUMBER

从 Snowflake 表中卸载数据的语句中传输的字节数。

inbound_data_transfer_cloud

VARCHAR

从另一个区域和/或云加载数据的语句的源云提供商。

inbound_data_transfer_region

VARCHAR

从另一个区域和/或云加载数据的语句的源区域。

inbound_data_transfer_bytes

NUMBER

在复制操作中从另一个账户传输的字节数。源账户可能与当前账户位于相同区域或不同区域。

list_external_files_time

NUMBER

列出外部文件所花费的时间(以毫秒为单位)。

credits_used_cloud_services

NUMBER

云服务使用的 Credit。此值未考虑 云服务的调整,因此可能大于计费的 Credit。要确定实际计费的 Credit 数量,请针对 METERING_DAILY_HISTORY 视图 运行查询。

reader_account_deleted_on

TIMESTAMP_LTZ

阅读者账户被删除时的时间和日期(采用 UTC 时区)。

release_version

VARCHAR

格式为 major_release.minor_release.patch_release 的版本。

external_function_total_invocations

NUMBER

此查询调用远程服务的汇总次数。有关重要详细信息,请参阅使用说明。

external_function_total_sent_rows

NUMBER

此查询在对所有远程服务的所有调用中发送的总行数。

external_function_total_received_rows

NUMBER

此查询从对所有远程服务的所有调用接收的总行数。

external_function_total_sent_bytes

NUMBER

此查询在对所有远程服务的所有调用中发送的总字节数。

external_function_total_received_bytes

NUMBER

此查询从对所有远程服务的所有调用接收的总字节数。

query_load_percent

NUMBER

此查询执行的仓库中活动计算资源的近似百分比。

is_client_generated_statement

BOOLEAN

表示查询是否由客户端生成。

query_acceleration_bytes_scanned

NUMBER

Query Acceleration Service 扫描的字节数。

query_acceleration_partitions_scanned

NUMBER

Query Acceleration Service 扫描的分区数。

query_acceleration_upper_limit_scale_factor

NUMBER

查询将从中受益 的上限 比例因子

transaction_id

NUMBER

包含语句的 事务的 ID,如果语句未在事务中执行,则为 0。

child_queries_wait_time

NUMBER

调用 可记忆函数 时完成缓存查找的时间(以毫秒为单位)。

role_type

VARCHAR

指定是 APPLICATION、DATABASE_ROLE 还是 ROLE 执行了查询。

query_hash

VARCHAR

根据规范化 SQL 文本计算的 哈希值

query_hash_version

NUMBER

用于计算 QUERY_HASH逻辑版本

query_parameterized_hash

VARCHAR

根据参数化查询计算的 哈希值

query_parameterized_hash_version

NUMBER

用于计算 QUERY_PARAMETERIZED_HASH逻辑版本

owner_role_type

VARCHAR

拥有对象的角色类型是 ROLEDATABASE_ROLE. 如果 Snowflake Native App 拥有该对象,则该值为 APPLICATION. 如果您删除该对象,则 Snowflake 会返回 NULL,原因是删除的对象不具有所有者角色。

secondary_role_stats

VARCHAR

JSON 格式的字符串包含有关查询中计算的次要角色的三个字段:取决于会话的次要角色或 ALL 列表、次要角色数量的计数以及每个次要角色的内部/系统生成的 ID。IDs 的计数和数量最多为 50。

rows_written_to_result

NUMBER

写入结果对象的行数。对于 CREATE TABLE AS SELECT (CTAS) 和所有 DML 操作,此结果为 1

rows_inserted

NUMBER

查询插入的行数。

query_retry_time

NUMBER

由可操作错误导致的查询重试的总执行时间(以毫秒为单位)。有关更多信息,请参阅 查询重试列

query_retry_cause

VARIANT

可操作错误的错误消息数组。此数组包含每次查询重试的一条错误消息。如果没有查询重试,则数组为空。有关更多信息,请参阅 查询重试列

fault_handling_time

NUMBER

由于 可操作错误导致的查询重试的总执行时间(以毫秒为单位)。有关更多信息,请参阅 查询重试列

使用说明

通用

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

  • EXTERNAL_FUNCTION_TOTAL_INVOCATIONS、EXTERNAL_FUNCTION_TOTAL_SENT_ROWS、EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS、EXTERNAL_FUNCTION_TOTAL_SENT_BYTES 和 EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES 列的值受许多因素影响,包括:

    • SQL 语句中外部函数的数量。

    • 发送到每个远程服务的每批的行数。

    • 由于暂时性错误(例如,由于未在预期时间内收到响应)而导致的重试次数。

查询重试列

查询可能需要重试一次或多次才能成功完成。可能有多种原因导致查询重试。其中一些原因是 可操作的,也就是说,用户可以进行更改以减少或消除对特定查询的查询重试次数。例如,如果由于内存不足错误而重试查询,则修改仓库设置可能会解决问题。

某些查询重试是由不可操作的错误引起的。也就是说,用户无法进行任何更改来防止查询重试。例如,网络中断可能会导致查询重试。在这种情况下,对查询或执行查询的仓库进行任何更改都无法阻止查询重试。

QUERY_RETRY_TIME、QUERY_RETRY_CAUSE 和 FAULT_HANDLING_TIME 列可以帮助您优化重试的查询,更好地了解查询性能的波动。

混合表

以下指南适用于在使用 QUERY_HISTORY 视图时对混合表运行查询。

  • 专门针对混合表执行操作的短期运行查询将不再在此视图或 QUERY_HISTORY。通过此视图,您可以更轻松地监控高吞吐量操作工作负载的趋势和问题。

  • 专门针对混合表运行的短期查询也将不再提供您可以在 Snowsight 中检查的查询配置文件。

  • 针对混合表的查询会在 QUERY_HISTORY 视图和查询配置文件(如果满足以下任何条件)中生成记录:

    • 对混合表以外的任何表类型执行查询。此条件可确保任何现有的非 Unistore 工作负载不会发生行为变更。

    • 查询失败,并显示 failed_with_incident 的 EXECUTION_STATUS(请参阅 QUERY_HISTORY)。此条件可确保您可以调查并报告特定的失败查询以获得帮助。

    • 查询运行时间超过大约 500 毫秒。此条件可确保您可以调查慢速查询的性能问题。

    • 查询结果大小过大。

    • 查询与 Snowflake 事务关联。

    • 查询包含具有副作用的系统函数。

    • 查询不是以下语句类型之一:SELECT、INSERT、DELETE、UPDATE、MERGE。

    • 查询从 SnowSQL、Snowsight 或 Classic Console 执行。此条件可确保您可以手动生成完全查询配置文件,以调查任何特定查询的性能问题,即使它未被归类为长时间运行也是如此。

    • 即使查询不满足上述任何条件,也可以定期对查询进行采样以在 QUERY_HISTORY 视图和查询配置文件中生成记录以帮助进行调查。

语言: 中文