STL_ALERT_EVENT_LOG
当查询优化程序发现可能指示性能问题的条件时记录警报。使用 STL_ALERT_EVENT_LOG 视图标识用于改进查询性能的机会。
一个查询包含多个区段,而且每个区段包含一个或多个步骤。有关更多信息,请参阅 查询处理。
STL_ALERT_EVENT_LOG 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其自己的数据。有关更多信息,请参阅 系统表和视图中的数据可见性。
注意
STL_ALERT_EVENT_LOG 仅包含在主集群上运行的查询。它不包含在并发扩展集群上运行的查询。要访问在主集群和并发扩展集群上运行的查询,我们建议您使用 SYS 监控视图 SYS_QUERY_DETAIL。SYS 监控视图中的数据经过格式化处理,便于使用和理解。
表列
列名称 | 数据类型 | 描述 |
---|---|---|
userid | integer | 生成该条目的用户 ID。 |
query | integer | 查询 ID。查询列可用于连接其他系统表和视图。 |
slice | integer | 标识运行查询所在切片的标识符。 |
segment | integer | 标识查询区段的数字。 |
step | integer | 运行的查询步骤。 |
pid | integer | 与语句和切片关联的进程 ID。如果同一查询在多个切片上运行,则该查询可能有多个 PID。 |
xid | bigint | 与语句关联的事务 ID。 |
event | character(1024) | 警报事件的描述。 |
solution | character(1024) | 建议的解决方案。 |
event_time | 时间戳 | 查询开始的时间(采用 UTC 表示)。总时间包括排队和执行时间。秒的小数部分以 6 位精度表示。例如:2009-06-12 11:29:19.131358 。 |
使用说明
您可以使用 STL_ALERT_EVENT_LOG 来标识查询中的潜在问题,然后按照查询性能优化中的做法来优化数据库设计并重新编写查询。STL_ALERT_EVENT_LOG 将记录以下警报:
-
缺失统计数据
统计数据缺失。在加载数据或进行大量更改之后运行 ANALYZE 并结合使用 STATUPDATE 和 COPY 操作。有关更多信息,请参阅 设计查询的 Amazon Redshift 最佳实践。
-
嵌套循环
一个嵌套循环通常是一个笛卡尔积。评估您的查询以确保所有参与表均已高效地联接。
-
选择性非常强的筛选条件
返回的行与扫描的行的比率小于 0.05。扫描的行数是
rows_pre_user_filter
的值,而返回的行数是 STL_SCAN 系统视图中的行数值。表示查询正在扫描数量极其大的行来确定结果集。这可能是由于排序键缺失或不正确导致的。有关更多信息,请参阅 排序键。 -
过多的虚影行
扫描跳过了相对大量的标记为已删除但未抽空的行或已插入但未提交的行。有关更多信息,请参阅 对表执行 vacuum 操作。
-
大型分配
为进行哈希联接或聚合重新分配了超过 1000000 的行。有关更多信息,请参阅 用于优化查询的数据分配。
-
大型广播
为进行哈希联接广播了超过了 1000000 的行。有关更多信息,请参阅 用于优化查询的数据分配。
-
顺序执行
DS_DIST_ALL_INNER 重新分配方式已在查询计划中指明,此方式强制实施序列执行,因为整个内部表已重新分配到单个节点。有关更多信息,请参阅 用于优化查询的数据分配。
示例查询
以下查询显示了四种查询的警报事件。
SELECT query, substring(event,0,25) as event, substring(solution,0,25) as solution, trim(event_time) as event_time from stl_alert_event_log order by query; query | event | solution | event_time -------+-------------------------------+------------------------------+--------------------- 6567 | Missing query planner statist | Run the ANALYZE command | 2014-01-03 18:20:58 7450 | Scanned a large number of del | Run the VACUUM command to rec| 2014-01-03 21:19:31 8406 | Nested Loop Join in the query | Review the join predicates to| 2014-01-04 00:34:22 29512 | Very selective query filter:r | Review the choice of sort key| 2014-01-06 22:00:00 (4 rows)