SQL慢查询在Greenplum/Deepgreen中的定位方法

简介: SQL慢查询在Greenplum/Deepgreen中的定位方法 在生产过程中,有的SQL查询往往会变得越来越慢,这时候,我们该怎么办呢?首当其冲的,我们可以通过查询计划来定位问题,今天就来谈谈如何在查询计划中定位这些慢查询产生的原因。

在生产过程中,有的SQL查询往往会变得越来越慢,这时候,我们该怎么办呢?首当其冲的,我们可以通过查询计划来定位问题,今天就来谈谈如何在查询计划中定位这些慢查询产生的原因。

1.查询计划中是否有操作耗时特别的长?

当我们分析查询计划时,是否有一个异常操作消耗了大部分的查询时间?比如,在执行索引扫描时,时间比预期的要长很多,这时候我们基本可以判断此索引可能已经超期了,需要重建。

2.查询计划预估的时间和真实的时间接近吗?

我们通过运行 EXPLAIN ANALYZE ,查看执行计划预估的返回行数与实际返回的行数是否接近,如果出入很大,说明统计信息是有问题的,我们需要对相关表/列收集更多的统计信息。

3.选择语句中的限定条件是否生效更早?

在执行计划中,选择性限定条件应该更早的应用,目的是让更少的数据返回到上层操作中。如果查询在选择性限定条件应用后表现并不好,返回的消耗依然很大,我们可以收集相关列的统计信息再看看是否会提高性能;另外,还可以通过调整SQL语句中不合理的 WHERE 条件来提高性能。

4.查询计划是否选择了最佳的JOIN顺序?

当我们的查询里面有很多连接操作(JOIN)时,要确保执行计划选择了一个最优连接顺序。拥有大量返回数据的连接应该尽早完成,以保证我们为上层操作返回更少的行。如果执行计划没有选择最佳的连接顺序,我们可以设置参数 join_collapse_limit=1 ,然后在SQL语句中使用明确的JOIN语法强迫执行计划按照特定的执行顺序执行。另外,我们可以收集相关列的统计信息再看看是否会提高性能。

5.查询计划是否有选择性的扫描分区表?

如果我们使用查询中涉及到了分区表数据查询,那么查询计划是否直接定位到扫描满足条件的分区,而不是扫描整张表。

6.查询计划是否适当的选择Hash Aggregate和Hash Join操作?

Hash操作比其他类型的聚合或者连接操作要快很多,行数据的比较和分类操作是在内存中进行,而不是通过读写磁盘完成。为了能够使用Hash操作,我们必须保证有足够的 work memory 可以容纳查询计划返回的行数据,所以我们可以通过尝试增加work memory来提高查询性能。通过运行EXPLAIN ANALYZE命令,这样可以看出哪些计划会有数据使用到磁盘,需要多少额外的work memory等,为work memory的调整提供参考。例如:

Work_mem used: 23430K bytes avg, 23430K bytes max (seg0).
Work_mem wanted: 33649K bytes avg, 33649K bytes max (seg0) to lessen workfile I/O affecting 2 workers.
目录
相关文章
|
1月前
|
SQL 缓存 Java
sql优化方法
sql优化方法
20 0
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
110 1
|
2月前
|
SQL 存储 BI
sql server 2012远程链接的方法及步骤
sql server 2012远程链接的方法及步骤
22 1
|
13天前
|
SQL Oracle 关系型数据库
常见 SQL 注入绕过方法
常见 SQL 注入绕过方法
|
13天前
|
SQL Oracle 关系型数据库
利用 SQL 注入提取数据方法总结
利用 SQL 注入提取数据方法总结
|
13天前
|
SQL 关系型数据库 MySQL
利用 SQL 注入识别数据库方法总结
利用 SQL 注入识别数据库方法总结
|
13天前
|
SQL 数据库
常见寻找 SQL 注入方法总结
常见寻找 SQL 注入方法总结
|
20天前
|
SQL 数据库
常用SQL查询方法与实例
常用SQL查询方法与实例
34 0
|
20天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
103482 1
|
24天前
|
SQL Oracle 安全
Oracle的PL/SQL异常处理方法:守护数据之旅的“魔法盾”
【4月更文挑战第19天】Oracle PL/SQL的异常处理机制是保障数据安全的关键。通过预定义异常(如`NO_DATA_FOUND`)和自定义异常,开发者能优雅地管理错误。异常在子程序中抛出后会向上传播,直到被捕获,提供了一种集中处理错误的方式。理解和善用异常处理,如同手持“魔法盾”,确保程序在面对如除数为零、违反约束等挑战时,能有效保护数据的完整性和程序的稳定性。