ITPub博客

首页 > 数据库 > Oracle > 一个update语句引起的性能下降问题

一个update语句引起的性能下降问题

原创 Oracle 作者:qdrzq 时间:2014-05-20 14:21:22 0 删除 编辑

接到客户反馈,最近应用系统性能有所下降.
另外客户已经通过AWR报告得知,最近oracle数据库重做日志切换较以前频繁,部分时间段大约每30秒切换一次.

通过对日志文件使用LogMiner进行分析得知,充斥着大量的下列形式的语句(不同的是RowID)
update "HSCMP"."TCVSTHBODY" set "YWTYPE" = '4' where "YWTYPE" = '4' and ROWID = 'AAAUo2AAGAAAqmVAAN';

最终定位到某个存储过程,最近更新(增加)了下面一个update语句.
Update tCvsThBody Set YwType='4' Where  substr(billno,1,5)='1UNTH';
这儿说一下,根据LogMiner分析的结果来看,oracle记录日志是按RowID分解后,逐行记录的,而且为了方便记录变更向量及其更新前的原值,所以看到的where条件与存储过程中语句的where条件有所不同.

将上面的语句改写了一下,如下
Update tCvsThBody Set YwType='4' Where  substr(billno,1,5)='1UNTH' and YwType<>'4';
问题解决.

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29512902/viewspace-1165163/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-03-01

  • 博文量
    38
  • 访问量
    362738