为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:达梦数据库8.4 数据守护集群
【操作系统】:麒麟系统
【CPU】:
【问题描述】*:
我这边数据库运行过程中开发老师反馈有一个SQL很慢,导致程序超时情况。
我拿到SQL执行,把里面值换成实际的值进行执行,执行时间在1秒内,很快。我通过达梦的监控工具的SQL监控区块监控到这个SQL在程序调用的情况下花费了8秒。我第一个反应是不是我统计信息存在问题,导致 绑定变量的SQL执行慢,我重新收集了统计信息,做了全库的统计信息都没有效果。
一条SQL where条件换成实际的值进行查询,执行时间为一秒内。如果where 后面换成绑定变量让查询调用就需要花费8秒。再收集完统计信息,全库统计信息情况下,程序上执行增加到33秒,然后一整天都花在这个SQL上面,我只能怀疑是程序绑定变量的参数有问题(开发反馈参数没问题),这个问题在第二天就好了,程序执行时间又恢复到1秒内。
我数据库是:达梦数据守护集群,dm 8.4
表的数据量在7万。
是事后数据库自己恢复的,我自己也排查不出原因。
这个不排除应用连接数据库的网络存在延迟的可能。
SQL的快慢和执行计划和当时的软硬件资源的环境有关系,您可以把带参数的SQL和不带参数的SQL的执行计划做一个比较,看看有没有什么偏差;还有就是执行慢的时候和快的时候的资源如CPU、内存、IO的情况做个对比