时不待我 天道酬勤

没有多少时间可以虚度了....

导航

公文流转SQL优化日志七

Posted on 2011-08-30 13:47  jadesun  阅读(996)  评论(2编辑  收藏  举报

近期公文反映会比较慢,和珊姐做了一下监控,返回的监视结果如下。

 

数据库服务器的CPU消耗时间如下图(2011-08-10 2011-08-18)


 

从数据库服务器的CPU消耗时间来看,08-1008-18号的CPU时间占用始终没有超过20%,服务器的性能很好。但是这段时间频繁的产生性能问题,很诡异。

 

继续分析珊姐提供的SQL SERVER PROFILE文件。

 

 

Sql Server Profile的监视结果来看,CPU耗时不高,逻辑读也很低,就是总时间消耗得很厉害。这些名词的作用解释如下:

 

CPU时间是等待锁等资源释放、解析、编译查询所需的处理器时间。
Duration(
占用时间)可以说是除了CPU时间之外,还有存储器中的数据存取,磁盘IO,总线上消耗的时间总和。

 

这里面就可以解释了我们的数据库服务器的CPU时间为什么不高,而总是有性能问题了,因为我们的消耗全在数据的存取和磁盘的IO之上。

 

找到了影响性能的关键语句,如下面的截图:

 


 

让珊姐执行了这条语句,每一次都会返回21万条记录。这就是数据的存储和IO的耗时所在了。

 

继续看看哪些功能会执行上面的SQL,从项目中分析得到以下方法会执行这条语句。

 


 

继续看看被谁引用了

 


 

这个代码片断是用于做 节点总量控制 签批路径树 的。这两个功能是我们的核心功能,会被频繁的调用。而调用时每次都会查询数据库并返回20多万条数据。

 

 

后面我们将优化这个功能,并且清理tbWF_NodeInstance表的冗余数据。相信近期困扰我们的性能问题会被解决。