日期:2014-05-17  浏览次数:20954 次

oracle每秒钟事务提交数过多,170-180/s
有一个系统,现在客户发现,I/O瓶颈,经过分析,发现每秒钟事务数达到极限,导致I/O较高,导致数据库会暂时锁住后续事务的提交,产生数据库报警。想请大家给支个招,如果是程序问题的话,那如何下手分析呢?一般什么操作会使数据库不停的进行事务提交操作呢?望高人指点。

------解决方案--------------------
当然有关系喽,一次commit之后,一次事务就产生楼。。
探讨

恩,对的,我跟了下程序,每次执行insert,update,delete都会执行commit,跟这个有关系吗?

------解决方案--------------------
commit之后,oracle会把log buffer中的数据写入到redo file中,产生lgwr进程的原因有三:1、用户commit 2、log buffer有1/3满或是log buffer中的数据超过1M 3、dbwr进程触发lgwr进程。 你的问题就是原因1,可能出现热点块。
------解决方案--------------------
执行COMMIT时,LGWR 将所有余下的缓存重做日志条目写到磁盘,如果事务提交得太频繁,就有可能引入大量的日志文件同步等待。
http://blog.csdn.net/fw0124/article/details/6899364
因此最好根据业务需求来确定事务的大小,你目前的情况,要么是系统吞吐量太大,否则有可能就是程序设计的问题了。