Amazon Redshift 是一个快速、可扩展、安全且完全托管的云数据仓库,能够让用户大规模分析数据。Amazon RedshiftServerless允许用户在无需进行通常配置的情况下访问和分析数据,自动配置资源,并智能地扩展数据仓库容量,以提供快速性能,无论在高负载还是不可预测的工作负载下。
为了帮助用户监控其管理的集群和数据库的健康状况,Amazon Redshift 提供了两类性能指标:
为此,Amazon Redshift引入了一项新功能——。该工具通过图形化界面帮助用户分析查询的组成部分及其性能。查询分析器提供了查询运行顺序、执行计划和各种统计数据的可视化表示,使用户更容易理解和故障排除查询。
在本文中,我们将介绍两个常见的查询性能问题及其排查步骤。
对于 Amazon Redshift Serverless,查询分析器可以通过访问 Serverless 控制台进行访问。选择 查询和数据库监控 ,选择一个查询,然后导航至 查询计划 标签。如果有可用的查询计划,将会看到子查询的列表。选择一个查询以在查询分析器中查看。
对于 Amazon Redshift 提供的集群,可以通过访问提供的集群仪表板来访问查询分析器。选择 查询和加载 ,然后选择一个查询。导航至 查询计划 标签,就可以观察到可用的子查询列表。
`json { "Version": "2012-10-17", "Statement": ,并参考本文后续的 数据加载 部分。
sys:operator 或 sys:monitor 角色给相应的数据库用户,以查看用户执行的查询。提供了,可加载到示例数据库及其对应的架构中。要通过示例数据测试查询分析器,请加载 tpcds示例数据并运行查询。
sample_data_dev 以加载 tpcds 示例数据。tpcds. 相关联的图标。以下截图展示了这些步骤。
![Load删除)
sql select count(*) from sample_data_dev.tpcds.customer;
![Verify删除)
本文中,我们描述了两个关于查询性能的常见用例,以及如何使用查询分析器来排查性能问题:
要使用查询分析器排查嵌套循环连接的性能问题,请按照以下步骤操作:
sample_data_dev,如下截图所示。cell #3,以诊断与嵌套循环连接相关的查询性能问题。查询的运行时间约为 12 秒 ,如查询编辑器 v2 的结果面板所示。
![Step 4删除)
cell #5 从 系统视图中捕获 查询 ID ,根据您在前一步骤中设置的查询标签进行过滤。连接到数据库。成功连接后,您会看到状态显示为 已连接,并显示查询历史,如下图所示。子查询 1,如图所示。如果有多个子查询,则需要检查每一个子查询的性能问题。Store_returns 表的交叉连接,287,514 的输入行膨胀到 950,233,770 行,从而导致查询变慢。store_sales 和 store_returns 之间引入连接条件修复查询。运行查询编辑器 v2 演示笔记本中的 cell #7。重新编写的查询运行仅需 307 毫秒 。cell #10,将 web_sales 和 web_returns 表的分布样式更改为 均匀 。cell #12。如查询编辑器的运行时间所示,查询运行时间为 409 毫秒 。query_id,并打开查询分析器查看前述查询。流 6 显示一个哈希连接步骤,其中涉及对两个均重新分配的表进行哈希连接。这可以从 解释计划节点信息 中的 Hash Right JoinDS_DIST_BOTH
来推测。通常,这些重新分配发生是因为表未在其分布键上连接,或其没有正确的分布样式。对于大型表,这些重新分配可能会导致显著的性能下降,因此识别和修复明细以优化查询性能是重要的。
![Hashjoin删除)
web_sales 和 web_returns 上选择适当的分布键来修复此不理想的数据分布模式。要更改分布样式,请运行演示笔记本的 cell #14 更改表命令。cell #16 重新执行选择查询。更新分布样式为分布键后,查询在查询编辑器中完成仅需 244 毫秒 。web_sales 和 web_returns 表的分布样式更改为分布键后,查询运行时不需要重新分配,导致优化性能的实现。使用查询分析器时,请考虑以下细节:
Leave a Reply