架构:

ACCOUNT_USAGE

TABLE_PRUNING_HISTORY 视图

此 Account Usage 视图可用于确定所有表的修剪效率,并了解表的默认(自然)数据排序如何影响修剪。

您可以将修剪的分区数量 (PARTITIONS_PRUNED) 与扫描和修剪的分区总数 (PARTITIONS_SCANNED + PARTITIONS_PRUNED) 进行比较。

您还可以使用此视图比较在为表启用 自动聚类搜索优化 之前和之后的修剪效果。

列名称

数据类型

描述

START_TIME

TIMESTAMP_LTZ

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

END_TIME

TIMESTAMP_LTZ

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

TABLE_ID

NUMBER

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

TABLE_NAME

TEXT

被查询表的名称。

SCHEMA_ID

NUMBER

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

SCHEMA_NAME

TEXT

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

DATABASE_ID

NUMBER

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

DATABASE_NAME

TEXT

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

NUM_SCANS

NUMBER

在 START_TIME 和 END_TIME 窗口期间,所有查询(包括 SELECT 语句和 DML 语句)对表执行的扫描操作数量。请注意,某个查询可能会对同一个表进行多次扫描操作。

PARTITIONS_SCANNED

NUMBER

NUM_SCANS 中描述的扫描操作期间扫描的分区数量。

PARTITIONS_PRUNED

NUMBER

NUM_SCANS 所述的扫描操作期间修剪的分区的数量。

ROWS_SCANNED

NUMBER

NUM_SCANS 所述的扫描操作期间扫描的行的数量。

ROWS_PRUNED

NUMBER

NUM_SCANS 所述的扫描操作期间修剪的行的数量。

使用说明

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

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

示例

列出过去七天内修剪效率最差的五个表:

SELECT
    table_id,
    ANY_VALUE(table_name) AS table_name,
    SUM(num_scans) AS total_num_scans,
    SUM(partitions_scanned) AS total_partitions_scanned,
    SUM(partitions_pruned) AS total_partitions_pruned,
    SUM(rows_scanned) AS total_rows_scanned,
    SUM(rows_pruned) AS total_rows_pruned
  FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_PRUNING_HISTORY
  WHERE start_time >= DATEADD(day, -7, CURRENT_TIMESTAMP())
  GROUP BY table_id
  ORDER BY
    total_partitions_pruned / GREATEST(total_partitions_scanned + total_partitions_pruned, 1),
    total_partitions_scanned DESC
  LIMIT 5;
Copy
+----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------+
| TABLE_ID | TABLE_NAME     | TOTAL_NUM_SCANS | TOTAL_PARTITIONS_SCANNED | TOTAL_PARTITIONS_PRUNED | TOTAL_ROWS_SCANNED | TOTAL_ROWS_PRUNED |
|----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------|
|   308226 | SENSOR_DATA_TS |              11 |                       21 |                       1 |           52500000 |           2500000 |
|   185364 | MATCH          |              16 |                       14 |                       2 |             240968 |             34424 |
|   209932 | ORDER_HEADER   |               2 |                      300 |                      56 |          421051748 |          75350790 |
|   209922 | K7_T1          |             261 |                      261 |                      52 |              30421 |              3272 |
|   338948 | SENSOR_DATA_TS |               9 |                       15 |                       3 |           38880000 |           8035200 |
+----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------+

当扫描分区的数量和修剪分区的数量之和为零时,上述示例使用 GREATEST 来避免发生除以零的情况。

语言: 中文