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

查询分析工作流程

如果查询耗时长于预期,请使用以下步骤发现和纠正可能对查询性能产生负面影响的问题。如果您不确定系统中的哪些查询可能因性能优化而受益,请从运行发现极需要优化的查询中的诊断查询开始。

  1. 请务必根据最佳实践设计您的表。有关更多信息,请参阅 设计表的最佳实践

  2. 确定您能否删除或存档表中的任何不必要的数据。例如,假设您的查询目标始终为最近 6 个月的有用数据,但表中包含最近 18 个月的数据。在这种情况下,您可以删除或存档较旧的数据,以减少需要扫描和分配的记录数量。

  3. 在查询中对表运行 VACUUM 命令,以回收空间和对行进行重新排序。如果未排序区域较大且查询在联接或谓词中使用了排序键,则运行 VACUUM 会有所帮助。

  4. 在查询中对表运行 ANALYZE 命令,以确保统计数据是最新的。如果查询中任意表的大小最近发生过较大的变化,则运行 ANALYZE 会有所帮助。如果运行完整的 ANALYZE 命令需要过长时间,则对某一列运行 ANALYZE,以减少处理时间。这种方法仍会更新表大小的统计数据;表大小在查询规划中是一个很重要的因素。

  5. 确保查询在每个类型的客户端(基于客户端使用的连接协议的类型)上都运行一次,以便查询得到编译和缓存。该种方法可加快查询的后续运行速度。有关更多信息,请参阅 影响查询性能的因素

  6. 请参阅 STL_ALERT_EVENT_LOG 表,以发现和纠正查询中可能存在的问题。有关更多信息,请参阅 查看查询提醒

  7. 运行 EXPLAIN 命令以获取查询计划并利用查询计划优化查询。有关更多信息,请参阅 分析查询计划

  8. 使用 SVL_QUERY_SUMMARYSVL_QUERY_REPORT 视图获取摘要信息并利用摘要信息优化查询。有关更多信息,请参阅 分析查询摘要

有时,本应执行很快的查询会被强迫等待另一个耗时的查询完成。在这种情况下,您可能无法对查询本身做出任何改进,但您可通过为不同类型的查询创建和使用查询队列来提高总体系统性能。要了解查询的队列等待时间,请参阅查看查询的队列等待时间。有关配置查询队列的更多信息,请参阅实施工作负载管理