最近我们在生产环境中升级了应用程序版本。自从我们的系统性能变得非常缓慢。曾经在之前版本中在1小时内完成的业务用例占用当前版本需要3个多小时才能完成。我们分析了furthur并将我们的问题缩小到单个sql查询。在与此查询对应的代码或查询本身中没有进行任何更改。此查询在当前版本中执行的次数与查询在先前版本中执行的次数几乎相同,并且我们也不怀疑数据库数据中的太多更改。我们的客户对这两个版本进行了statspack分析,发现这个特定的查询被列为顶级查询,在当前版本中消耗了更多的物理读取,更多的缓冲区获取,更多的时间和更多的CPU时间,而与之前版本相对应的statspack文件甚至没有甚至在一个类别中列出这个。
那么,在几乎相同的数据加载下,相同查询的所有可能性是什么,导致更多的物理读取,更多的缓冲区获取,更多的时间和更多的CPU时间?
答案 0 :(得分:0)
这些问题主要是缺乏或陈旧的统计数据。尝试收集桌面上的统计数据。 检查表上的任何二级索引是否最近被删除。还要比较正常运行时查询的解释计划与使用高IO / CPU的查询计划。