1.8 过度提交

在PL/SQL程序循环中经常见到插入、修改或删除每行后面紧接着就是提交。这种在每行后面提交的编码方法会导致程序执行得更慢。频繁的提交产生更多的重做(redo),需要日志写入器更频繁地将日志缓冲区的内容保存到日志文件。过度提交还会导致数据一致性问题,并且消耗更多的资源。虽然Oracle已经优化了PL/SQL引擎以减少频繁提交的影响,但这无法替代由于自身编写良好从而减少了提交的代码。

你应当只在一项业务交易完成后提交,如果在到达业务交易的边界前就提交了,就会遇到数据一致性问题。如果必须用提交来提升中断后可重新开始的能力,那么建议使用批量提交。比起每行之后提交,每1000或5000行批量提交一次更好。每批的数量选择取决于应用程序。更少的提交会使程序的运行时间缩短。而且,从应用程序发出更少的提交也能提高数据库的性能。

目录