Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

查看查询提醒

要利用 STL_ALERT_EVENT_LOG 系统表发现和纠正查询中可能存在的性能问题,请按以下步骤操作:

  1. 运行以下操作以确定查询 ID:

    Copy
    select query, elapsed, substring from svl_qlog order by query desc limit 5;

    检查 substring 字段中的截断查询文本,以确定要选择的 query 值。如果至少运行过该查询两次,则使用 elapsed 值较小的行的 query 值。这是已编译的行。如果运行多个查询,则可以增大 LIMIT 子句使用的值,以确保将查询包含在内。

  2. 从查询的 STL_ALERT_EVENT_LOG 中选择行:

    Copy
    Select * from stl_alert_event_log where query = MyQueryID;
  3. 评估查询的结果。使用下面的表找到已发现的任何问题的可能解决方案。

    注意

    并非所有查询都在 STL_ALERT_EVENT_LOG 中拥有行(仅限存在已发现的问题的查询)。

    问题 事件值 解决方案值 建议的解决方案
    查询中表的统计数据缺失或过时。 缺失的查询计划程序统计数据 运行 ANALYZE 命令 请参阅表统计数据缺失或过时
    查询计划中存在嵌套循环联接(优化程度最差的联接)。 查询计划中的嵌套循环联接 检查联接谓词,避免使用笛卡尔积 请参阅嵌套循环
    扫描跳过了相对大量的标记为已删除但未清除的行或已插入但未提交的行。 扫描了大量已删除的行 运行 VACUUM 命令以回收删除的空间 请参阅虚影行或未提交的行
    为进行哈希联接或聚合重新分配了超过 1000000 的行。 在网络上分配了大量的行:为处理聚合,分配了 RowCount 行 检查分配键的选择,以并置联接或聚合 请参阅非最优数据分配
    为进行哈希联接广播了超过 1000000 的行。 在网络上广播了大量的行 检查分配键的选择,以并置联接并考虑使用已分配的表 请参阅非最优数据分配
    DS_DIST_ALL_INNER 重新分配方式已在查询计划中指明,此方式强制实施序列执行,因为整个内部表已重新分配到单个节点。 查询计划中用于哈希联接的 DS_DIST_ALL_INNER 检查分配策略的选择,以分配内部表而不是外部表 请参阅非最优数据分配