架构:

ACCOUNT_USAGE

TABLE_QUERY_PRUNING_HISTORY 视图

使用此 Account Usage 视图可以更好地了解查询执行期间的数据访问模式。

您可以将此视图与 COLUMN_QUERY_PRUNING_HISTORY 视图 结合使用。例如,您可以使用 TABLE_QUERY_PRUNING_HISTORY 视图识别对目标表的访问权限,然后使用 COLUMN_QUERY_PRUNING_HISTORY 视图识别这些表中常用的列。

特别是,这些视图可以帮助您为 群集密钥 做出更明智的选择。

此视图中的每一行代表给定时间间隔内,特定表的查询修剪历史记录。数据按时间间隔汇总,包括有关执行的查询数量、扫描的分区数量、修剪的分区数量、扫描的行数、删除的行数和匹配的行数的信息。

另请参阅 TABLE_PRUNING_HISTORY 视图查询修剪

列名称

数据类型

描述

INTERVAL_START_TIME

TIMESTAMP_LTZ

执行查询的时间范围(以小时为单位)的开始时间。

INTERVAL_END_TIME

TIMESTAMP_LTZ

执行查询的时间范围(以小时为单位)的结束时间。

TABLE_ID

NUMBER

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

TABLE_NAME

VARCHAR

被查询表的名称。

SCHEMA_ID

NUMBER

包含被查询表的架构的内部/系统生成的标识符。

SCHEMA_NAME

VARCHAR

包含被查询表的架构的名称。

DATABASE_ID

NUMBER

包含被查询表的数据库的内部/系统生成的标识符。

DATABASE_NAME

VARCHAR

包含被查询表的数据库的名称。

WAREHOUSE_ID

NUMBER

用于运行查询的仓库的内部/系统生成标识符。

WAREHOUSE_NAME

VARCHAR

运行查询的仓库的名称。

QUERY_HASH

VARCHAR

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

QUERY_PARAMETERIZED_HASH

VARCHAR

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

NUM_QUERIES

NUMBER

在此时间范围内,通过此仓库访问此表时使用此特定 QUERY_HASH 值执行的查询的数量。

AGGREGATE_QUERY_ELAPSED_TIME

NUMBER

由 NUM_QUERIES 定义的查询的总运行时间(以毫秒为单位)。此总计值包括排队时间以及其他与编译和执行无关的时间。

AGGREGATE_QUERY_COMPILATION_TIME

NUMBER

由 NUM_QUERIES 定义的查询的总编译时间(以毫秒为单位)。

AGGREGATE_QUERY_EXECUTION_TIME

NUMBER

由 NUM_QUERIES 定义的查询的总执行时间(以毫秒为单位)。

PARTITIONS_SCANNED

NUMBER

此表上为由 NUM_QUERIES 定义的查询而扫描的分区数。

PARTITIONS_PRUNED

NUMBER

此表上为由 NUM_QUERIES 定义的查询而修剪的分区数。这些分区会在查询处理过程中被删除,不会进行扫描,从而提高查询的效率。

ROWS_SCANNED

NUMBER

此表上为由 NUM_QUERIES 定义的查询而扫描的行数。

ROWS_PRUNED

NUMBER

此表上为由 NUM_QUERIES 定义的查询而修剪的行数。这些行在查询处理过程中会被删除,不会进行扫描,从而提高查询的效率。

ROWS_MATCHED

NUMBER

扫描此表以查找由 NUM_QUERIES 定义的查询时,与 WHERE 子句筛选器相匹配的行数。

使用说明

  • 视图的延迟时间最长可达 4 小时。

  • 数据保留 1 年。

  • 此视图不包括 混合表 的修剪信息。

  • 对于无法从下推优化中受益的复杂筛选条件,即便行与筛选条件不匹配,在表扫描操作期间也可能不会筛选掉这些行。因此,这些行计入 ROWS_MATCHED 值。

  • 被授予 USAGE_VIEWER 数据库角色的用户和角色可以访问此视图。有关更多信息,请参阅 SNOWFLAKE 数据库角色

  • 此视图会保留每个查询运行时间最长的 1,000 次表扫描的数据。只有复杂度极高的查询才会超过此扫描次数,因此很少会有数据会被忽略。

示例

第一个查询是一个简单的功能示例,它会返回在至少修剪了一行的特定日期内,针对特定表的查询的修剪历史记录。对于在 WHERE 子句 (INTERVAL_START_TIME) 中指定的日期完成的查询,结果中的每一行都属于一个特定的一小时时间窗口。

此查询中的 sensor_data_ts 表包含 5356800 行的合成时间序列数据。对于此处显示的所有查询,表中都恰好有一半的行 (2678400) 被修剪。这些查询的匹配行数有所不同。

SELECT interval_start_time, interval_end_time, table_id, table_name,
    num_queries, query_hash, rows_scanned, rows_pruned, rows_matched
  FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_QUERY_PRUNING_HISTORY
  WHERE interval_start_time LIKE '2025-04-24%'
    AND table_name='SENSOR_DATA_TS'
    AND rows_pruned > 0
  ORDER BY 1;
Copy
+-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------+
| INTERVAL_START_TIME           | INTERVAL_END_TIME             | TABLE_ID | TABLE_NAME     | NUM_QUERIES | QUERY_HASH                       | ROWS_SCANNED | ROWS_PRUNED | ROWS_MATCHED |
|-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------|
| 2025-04-24 14:00:00.000 -0700 | 2025-04-24 15:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 833f4ec4ebbda62c7882e1839faec799 |      2678400 |     2678400 |            5 |
| 2025-04-24 14:00:00.000 -0700 | 2025-04-24 15:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 94d16d2fa0892247d27066e45b58d3e4 |      2678400 |     2678400 |            5 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 24e89f5c01209d7b395f56559f893dc8 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 71c9c6570ef849e66f83af0625b793a2 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | c75cb64d446c1ba222ac14ebd1923641 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 5a3784c59fc788804c903d96698dd969 |      2678400 |     2678400 |            5 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 069a076d4d6850e3d242fccf498c7c6d |      2678400 |     2678400 |       216642 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 4c9c5aacb7a61fc6858d107c5c46fb14 |      2678400 |     2678400 |       216642 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 3e509721380b262906c62c76107e46c9 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 9f7e607fe48faa18e332f65cde49f037 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | b4488d8a84ab18b00dd6b2fead4a4cb4 |      2678400 |     2678400 |       394106 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 157d775a79c5bae120fb5db9f7d8d027 |      2678400 |     2678400 |       216642 |
+-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------+

以下示例计算每个表的“修剪率”,以帮助确定给定时间在给定仓库上运行的查询的修剪效率。该查询还会返回由每个查询扫描的分区数,这有助于了解查询性能与必须扫描的数据量之间的关系。

考虑到此查询的结果,用户可能会得出结论,尽管 sensor_data_ts 访问次数远远超过 sensor_data1,但这些查询通常花费的时间更少,扫描的微分区数量也要少得多。

SELECT
    SUM(total_execution_time) as sum_exec_time,
    SUM(num_queries) as sum_num_queries,
    SUM(partitions_pruned)/SUM(partitions_pruned+partitions_scanned) AS pruning_ratio,
    SUM(partitions_scanned)/SUM(num_queries) AS partitions_scanned_per_query,
    table_name,
    schema_name,
    database_name
  FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_QUERY_PRUNING_HISTORY
  WHERE interval_start_time > '2025-04-25 12:00:00.000 -0700'
    AND warehouse_name = 'SENSORS_WH'
  GROUP BY ALL
  ORDER BY 1 DESC;
Copy
+---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------+
| SUM_EXEC_TIME | SUM_NUM_QUERIES | PRUNING_RATIO | PARTITIONS_SCANNED_PER_QUERY | TABLE_NAME     | SCHEMA_NAME    | DATABASE_NAME |
|---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------|
|       1938743 |           19283 |      0.230000 |                  1800.000000 | SENSOR_DATA1   | SENSORS_SCHEMA | SENSORS_DB    |
|        123732 |           39320 |      0.950000 |                    12.000000 | SENSOR_DATA_TS | SENSORS_SCHEMA | SENSORS_DB    |
+---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------+
语言: 中文