- Schema:
AGGREGATE_ QUERY_ HISTORY 视图¶
此 Account Usage 视图使您能够监控和跟踪一段时间内的语句执行情况。它包含与 QUERY_HISTORY 视图类似的数据,但以一分钟为间隔,对重复的 SQL 语句进行汇总。您可以使用此视图来监控工作负载并分析性能。
除了对混合表进行的查询外,您在 Snowflake 中执行的所有查询都包含在 AGGREGATE_QUERY_HISTORY 中。然而,AGGREGATE_QUERY_HISTORY 对于监控和分析在高吞吐量下重复执行少量不同语句的 Unistore 工作负载而言特别有用。
列
| Column Name | Data Type | Description |
|---|---|---|
| CALLS | NUMBER | Number of times the statement (query + query plan) was executed in the aggregation interval. |
| INTERVAL_START_TIME | TIMESTAMP_LTZ | Start time of the window of measurement (in the local time zone). |
| INTERVAL_END_TIME | TIMESTAMP_LTZ | End time of the window of measurement (in the local time zone). |
| QUERY_PARAMETERIZED_HASH | TEXT | Unique ID to identify identical parameterized queries. See QUERY_PARAMETERIZED_HASH 列. |
| QUERY_TEXT | TEXT | Sample text of the SQL statement. |
| DATABASE_ID | NUMBER | Internal/system-generated identifier for the database that was in use. |
| DATABASE_NAME | TEXT | Database that was in use at the time of the query. |
| SCHEMA_ID | NUMBER | Internal/system-generated identifier for the schema that was in use. |
| SCHEMA_NAME | TEXT | Schema that was in use at the time of the query. |
| QUERY_TYPE | TEXT | DML, query, etc. If the query failed, then the query type may be UNKNOWN. |
| SESSION_ID | NUMBER | Session that executed the statement. |
| USER_NAME | TEXT | User who issued the query. |
| ROLE_NAME | TEXT | Role that was active in the session at the time of the query. |
| ROLE_TYPE | TEXT | Specifies APPLICATION, DATABASE_ROLE, or ROLE that executed the query. |
| WAREHOUSE_ID | NUMBER | Internal/system-generated identifier for the warehouse that was used. |
| WAREHOUSE_NAME | TEXT | Warehouse that the query executed on, if any. |
| WAREHOUSE_SIZE | TEXT | Size of the warehouse when this statement executed. |
| WAREHOUSE_TYPE | TEXT | Type of the warehouse when this statement executed. |
| QUERY_TAG | TEXT | Query tag set for this statement through the QUERY_TAG session parameter. |
| IS_CLIENT_GENERATED_STATEMENT | BOOLEAN | Indicates whether the query was client-generated. |
| RELEASE_VERSION | TEXT | Release version in the format of major_release.minor_release.patch_release. |
| ERRORS | ARRAY | List of error codes and messages that occurred during the aggregation interval. Each error is in the format of {"code": "code1", "message": "msg1", "count": 10}. |
| TOTAL_ELAPSED_TIME | OBJECT | Elapsed time (in milliseconds). |
| BYTES_SCANNED | OBJECT | Number of bytes scanned by this statement. |
| PERCENTAGE_SCANNED_FROM_CACHE | OBJECT | The percentage of data scanned from the local disk cache. The value ranges from 0.0 to 1.0. Multiply by 100 to get a true percentage. |
| BYTES_WRITTEN | OBJECT | Number of bytes written (e.g. when loading into a table). |
| BYTES_WRITTEN_TO_RESULT | OBJECT | Number of bytes written to a result object. For example, select * from . . . would produce a set of results in tabular format representing each field in the selection. In general, the results object represents whatever is produced as a result of the query, and BYTES_WRITTEN_TO_RESULT represents the size of the returned result. |
| BYTES_READ_FROM_RESULT | OBJECT | Number of bytes read from a result object. |
| ROWS_PRODUCED | OBJECT | Number of rows produced by this statement. |
| ROWS_INSERTED | OBJECT | Number of rows inserted by the query. |
| ROWS_UPDATED | OBJECT | Number of rows updated by the query. |
| ROWS_DELETED | OBJECT | Number of rows deleted by the query. |
| ROWS_UNLOADED | OBJECT | Number of rows unloaded during data export. |
| BYTES_DELETED | OBJECT | Number of bytes deleted by the query. |
| PARTITIONS_SCANNED | OBJECT | Number of micro-partitions scanned. |
| PARTITIONS_TOTAL | OBJECT | Total micro-partitions of all tables included in this query. |
| BYTES_SPILLED_TO_LOCAL_STORAGE | OBJECT | Volume of data spilled to local disk. |
| BYTES_SPILLED_TO_REMOTE_STORAGE | OBJECT | Volume of data spilled to remote disk. |
| BYTES_SENT_OVER_THE_NETWORK | OBJECT | Volume of data sent over the network. |
| COMPILATION_TIME | OBJECT | Compilation time (in milliseconds). |
| EXECUTION_TIME | OBJECT | Execution time (in milliseconds). |
| QUEUED_PROVISIONING_TIME | OBJECT | Time (in milliseconds) spent in the warehouse queue, waiting for the warehouse compute resources to provision, due to warehouse creation, resume, or resize. |
| QUEUED_REPAIR_TIME | OBJECT | Time (in milliseconds) spent in the warehouse queue, waiting for compute resources in the warehouse to be repaired. |
| QUEUED_OVERLOAD_TIME | OBJECT | Time (in milliseconds) spent in the warehouse queue, due to the warehouse being overloaded by the current query workload. |
| TRANSACTION_BLOCKED_TIME | OBJECT | Time (in milliseconds) spent blocked by a concurrent DML. |
| OUTBOUND_DATA_TRANSFER_CLOUD | TEXT | Target cloud provider for statements that unload data to another region and/or cloud. |
| OUTBOUND_DATA_TRANSFER_REGION | TEXT | Target region for statements that unload data to another region and/or cloud. |
| OUTBOUND_DATA_TRANSFER_BYTES | OBJECT | Number of bytes transferred in statements that unload data to another region and/or cloud. |
| INBOUND_DATA_TRANSFER_CLOUD | TEXT | Source cloud provider for statements that load data from another region and/or cloud. |
| INBOUND_DATA_TRANSFER_REGION | TEXT | Source region for statements that load data from another region and/or cloud. |
| INBOUND_DATA_TRANSFER_BYTES | OBJECT | Number of bytes transferred in a replication operation from another account. The source account could be in the same region or a different region than the current account. |
| LIST_EXTERNAL_FILES_TIME | OBJECT | Time (in milliseconds) spent listing external files. |
| CREDITS_USED_CLOUD_SERVICES | OBJECT | Number of credits used for cloud services. |
| EXTERNAL_FUNCTION_TOTAL_INVOCATIONS | OBJECT | Aggregate number of times that this query called remote services. For important details, see the Usage Notes. |
| EXTERNAL_FUNCTION_TOTAL_SENT_ROWS | OBJECT | Total number of rows that this query sent in all calls to all remote services. |
| EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS | OBJECT | Total number of rows that this query received from all calls to all remote services. |
| EXTERNAL_FUNCTION_TOTAL_SENT_BYTES | OBJECT | Total number of bytes that this query sent in all calls to all remote services. |
| EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES | OBJECT | Total number of bytes that this query received from all calls to all remote services. |
| QUERY_LOAD_PERCENT | OBJECT | The approximate percentage of active compute resources in the warehouse for this query execution. |
| QUERY_ACCELERATION_BYTES_SCANNED | OBJECT | Number of bytes scanned by the query acceleration service. |
| QUERY_ACCELERATION_PARTITIONS_SCANNED | OBJECT | Number of partitions scanned by the query acceleration service. |
| QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR | OBJECT | Upper limit scale factor that a query would have benefited from. |
| CHILD_QUERIES_WAIT_TIME | OBJECT | Time (in milliseconds) to complete the cached lookup when calling a memoizable function. |
| HYBRID_TABLE_REQUESTS_THROTTLED_COUNT | NUMBER | Number of hybrid table queries that were throttled. |
OBJECT 数据类型包含以下字段:
| Field Name | Description |
|---|---|
| sum | Sum across all executions within the aggregation interval. |
| avg | Average across all executions within the aggregation interval. |
| stddev | Standard deviation across all executions within the aggregation interval. |
| min | Minimum across all executions within the aggregation interval. |
| median | Median across all executions within the aggregation interval. |
| p90 | 90th percentile across all executions within the aggregation interval. |
| p99 | 99th percentile across all executions within the aggregation interval. |
| p99.9 | 99.9th percentile across all executions within the aggregation interval. |
| max | Maximum across all executions within the aggregation interval. |
Note
The following columns of the type OBJECT do not contain a sum field:
- PERCENTAGE_SCANNED_FROM_CACHE
- QUERY_LOAD_PERCENT
- QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR
QUERY_ PARAMETERIZED_ HASH 列¶
QUERY_PARAMETERIZED_HASH 列包含根据参数化查询(即参数化所有字面量后的查询版本)计算的哈希值。
例如,以下查询具有相同的 QUERY_PARAMETERIZED_HASH 值:
QUERY_PARAMETERIZED_HASH 值具有以下限制:
- 常数字面量必须是以下谓词的二元函数:等于、不等于、大于(或等于)、小于(或等于)。
- 别名必须相同。
只要 SQL 文本存在差异,QUERY_HASH 和 QUERY_PARAMETERIZED_HASH 的值就会不同,但以下情况除外:
- 标识符/会话变量/暂存区名称不区分大小写。
- 空格差异被忽略。
- 满足上述二元谓词规则的字面量。
使用说明
视图的延迟时间最长可达 180 分钟(3 小时)。
示例
您可以使用 AGGREGATE_QUERY_HISTORY 视图来监控可能存在的错误、排队、锁定阻塞或混合表限制等问题。您通常希望这些指标始终处于较低水平。如果您看到这些指标中的任何一个出现峰值,则可能表明存在问题:
您可以查询视图以监控整体工作负载吞吐量和并发性。许多工作负载具有规律的周期性模式。任何意外的峰值或下降都可能值得调查。
For example, monitor throughput and concurrency for warehouse my_warehouse in the first week of November:
对于最常用且重复次数最多的查询,最值得集中精力进行优化或提高工作负载效率。您可以查询视图,按执行计数确定一个工作负载的热门查询。
For example, identify the top queries by execution count for warehouse my_warehouse:
要按平均总延迟确定速度最慢的查询,请执行以下操作:
要分析感兴趣的特定查询随时间推移的性能,请执行以下操作: