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 架构中可用。
列名称 |
数据类型 |
描述 |
阅读者账户 |
---|---|---|---|
|
VARCHAR |
执行 SQL 语句的阅读者账户的名称。 |
✔ |
|
VARCHAR |
内部/系统生成的 SQL 语句标识符。 |
✔ |
|
VARCHAR |
SQL 语句的文本。限制为 10 万个字符。包含超过 10 万个字符的 SQL 语句将被截断。 |
|
|
NUMBER |
正在使用的数据库的内部/系统生成的标识符。 |
✔ |
|
VARCHAR |
编译时在查询上下文中指定的数据库。 |
✔ |
|
NUMBER |
正在使用的架构的内部/系统生成的标识符。 |
✔ |
|
VARCHAR |
编译时在查询上下文中指定的架构。 |
✔ |
|
VARCHAR |
DML、查询等。 如果查询失败,则查询类型可能为 UNKNOWN。 |
|
|
NUMBER |
执行语句的会话。 |
✔ |
|
VARCHAR |
发出查询的用户。 |
|
|
VARCHAR |
查询时会话中处于活动状态的角色。 |
✔ |
|
NUMBER |
已用数据库的内部/系统生成的标识符。 |
✔ |
|
VARCHAR |
执行查询的仓库(如果有)。 |
✔ |
|
VARCHAR |
执行此语句时仓库的大小。 |
✔ |
|
VARCHAR |
执行此语句时仓库的类型。 |
✔ |
|
NUMBER |
执行此语句的群集(在多群集仓库中)。 |
✔ |
|
VARCHAR |
通过 QUERY_TAG 会话参数为此语句设置的查询标签。 |
✔ |
|
VARCHAR |
查询的执行状态。有效值: |
✔ |
|
NUMBER |
错误代码(如果查询返回错误) |
✔ |
|
VARCHAR |
错误消息(如果查询返回错误) |
✔ |
|
TIMESTAMP_LTZ |
语句开始时间(本地时区) |
✔ |
|
TIMESTAMP_LTZ |
语句结束时间(本地时区)。 |
✔ |
|
NUMBER |
实际经过的时间(以毫秒为单位)。 |
✔ |
|
NUMBER |
此语句扫描的字节数。 |
✔ |
|
FLOAT |
从本地磁盘缓存扫描的数据所占的百分比。该值的范围为 0.0 到 1.0。乘以 100 以得出真正的百分比。 |
|
|
NUMBER |
写入的字节数(例如,加载到表中时)。 |
|
|
NUMBER |
写入结果对象的字节数。 例如, |
|
|
NUMBER |
从结果对象读取的字节数。 |
|
|
NUMBER |
此语句生成的行数。ROWS_PRODUCED 列将在未来的版本中弃用。ROWS_PRODUCED 列中的值并不总是反映受查询影响的逻辑行数。Snowflake 建议改用 ROWS_INSERTED、ROWS_UPDATED、ROWS_WRITTEN_TO、RESULTS 或 ROWS_DELETED 列。 |
✔ |
|
NUMBER |
查询插入的行数。 |
|
|
NUMBER |
查询更新的行数。 |
|
|
NUMBER |
查询删除的行数。 |
|
|
NUMBER |
数据导出期间卸载的行数。 |
|
|
NUMBER |
查询删除的字节数。 |
|
|
NUMBER |
扫描的微分区数。 |
|
|
NUMBER |
此查询中包含的所有表的总微分区数。 |
|
|
NUMBER |
溢出到本地磁盘的数据量。 |
|
|
NUMBER |
溢出到远程磁盘的数据量。 |
|
|
NUMBER |
通过网络发送的数据量。 |
|
|
NUMBER |
编译时间(以毫秒为单位) |
✔ |
|
NUMBER |
执行时间(以毫秒为单位) |
✔ |
|
NUMBER |
由于仓库创建、恢复或调整大小,在仓库队列中等待仓库计算资源预置所花费的时间(以毫秒为单位)。 |
✔ |
|
NUMBER |
在仓库队列中等待仓库中的计算资源进行修复所花费的时间(以毫秒为单位)。 |
✔ |
|
NUMBER |
由于当前查询工作负载使仓库过载,在仓库队列中所花费的时间(以毫秒为单位)。 |
✔ |
|
NUMBER |
因并发 DML 阻止而花费的时间(以毫秒为单位)。 |
✔ |
|
VARCHAR |
将数据卸载到另一个区域和/或云的语句的目标云提供商。 |
✔ |
|
VARCHAR |
将数据卸载到另一个区域和/或云的语句的目标区域。 |
✔ |
|
NUMBER |
从 Snowflake 表中卸载数据的语句中传输的字节数。 |
✔ |
|
VARCHAR |
从另一个区域和/或云加载数据的语句的源云提供商。 |
✔ |
|
VARCHAR |
从另一个区域和/或云加载数据的语句的源区域。 |
✔ |
|
NUMBER |
在复制操作中从另一个账户传输的字节数。源账户可能与当前账户位于相同区域或不同区域。 |
✔ |
|
NUMBER |
列出外部文件所花费的时间(以毫秒为单位)。 |
|
|
NUMBER |
云服务使用的 Credit。此值未考虑 云服务的调整,因此可能大于计费的 Credit。要确定实际计费的 Credit 数量,请针对 METERING_DAILY_HISTORY 视图 运行查询。 |
✔ |
|
TIMESTAMP_LTZ |
阅读者账户被删除时的时间和日期(采用 UTC 时区)。 |
✔ |
|
VARCHAR |
格式为 |
|
|
NUMBER |
此查询调用远程服务的汇总次数。有关重要详细信息,请参阅使用说明。 |
|
|
NUMBER |
此查询在对所有远程服务的所有调用中发送的总行数。 |
|
|
NUMBER |
此查询从对所有远程服务的所有调用接收的总行数。 |
|
|
NUMBER |
此查询在对所有远程服务的所有调用中发送的总字节数。 |
|
|
NUMBER |
此查询从对所有远程服务的所有调用接收的总字节数。 |
|
|
NUMBER |
此查询执行的仓库中活动计算资源的近似百分比。 |
|
|
BOOLEAN |
表示查询是否由客户端生成。 |
|
|
NUMBER |
Query Acceleration Service 扫描的字节数。 |
|
|
NUMBER |
Query Acceleration Service 扫描的分区数。 |
|
|
NUMBER |
||
|
NUMBER |
包含语句的 事务的 ID,如果语句未在事务中执行,则为 0。 |
|
|
NUMBER |
调用 可记忆函数 时完成缓存查找的时间(以毫秒为单位)。 |
|
|
VARCHAR |
指定是 APPLICATION、DATABASE_ROLE 还是 ROLE 执行了查询。 |
|
|
VARCHAR |
根据规范化 SQL 文本计算的 哈希值。 |
|
|
NUMBER |
用于计算 |
|
|
VARCHAR |
根据参数化查询计算的 哈希值。 |
|
|
NUMBER |
用于计算 |
|
|
VARCHAR |
拥有对象的角色类型是 |
|
|
VARCHAR |
JSON 格式的字符串包含有关查询中计算的次要角色的三个字段:取决于会话的次要角色或 |
|
|
NUMBER |
写入结果对象的行数。对于 CREATE TABLE AS SELECT (CTAS) 和所有 DML 操作,此结果为 |
|
|
NUMBER |
查询插入的行数。 |
|
|
NUMBER |
由可操作错误导致的查询重试的总执行时间(以毫秒为单位)。有关更多信息,请参阅 查询重试列。 |
|
|
VARIANT |
可操作错误的错误消息数组。此数组包含每次查询重试的一条错误消息。如果没有查询重试,则数组为空。有关更多信息,请参阅 查询重试列。 |
|
|
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 视图和查询配置文件中生成记录以帮助进行调查。