增强的 COMMIT
当提交会话时,将刷新重做日志缓冲区,将其内容存储到磁盘上的联机重做日志中。此过程确保在对数据库进行恢复操作时,可以根据需要利用重做日志中回放事务处理。
但是有时您可能想对一部分受保证的恢复能力进行调整,以获得更好的性能。利用 Oracle 数据库 10g 第 2 版,您现在可以控制如何将重做流写入到联机日志文件。您可以在执行提交语句时控制这种行为,或者只需更改数据库的默认行为即可。
让我们来看提交语句是工作过程。在事务处理后,当执行 COMMIT 时,可以附带一个子句:
COMMIT WRITE
其中 是影响重做流的部分。选项 WAIT 是默认行为。例如,您可以执行:
COMMIT WRITE WAIT;
此命令与 COMMIT 本身的效果相同。在重做流写入到联机重做日志文件之前,提交命令不会将控制权交还给用户。如果您不希望等待,则可以执行:
COMMIT WRITE NOWAIT;
这样,控制权立即返还给会话,甚至是在将重做流写入联机重做日志之前。
当执行提交命令时,日志写入器进程将重做流写入到联机重做日志。如果您正在进行一系列事务处理(如在批处理环境中),则可能不希望如此频繁地进行提交。当然,最好的操作过程是更改应用程序以减少提交数量;但这可能说起来容易做起来难。在这种情况下,您只需执行以下的提交语句:
COMMIT WRITE BATCH;
此命令将以批量方式将重做流写入到日志文件中,而不是每次提交都执行写操作。在频繁提交的环境中,您可以使用这种技术来减少日志缓冲区刷新。如果您希望立即写入日志缓冲区,则可以执行:
COMMIT WRITE IMMEDIATE;
如果您数据库默认使用某种特定的提交行为,则可以执行以下语句。
ALTER SYSTEM SET COMMIT_WRITE = NOWAIT;
此命令将使数据库默认使用这一行为。您还可以使其成为会话级默认行为:
ALTER SESSION SET COMMIT_WORK = NOWAIT;
对于任何参数,如果完成设置后,则该参数在系统级执行。如果有会话级的设置,则会话级设置优先,而最后如果 COMMIT 语句后面有子句,则该子句优先。
此选项不可用于分布式事务处理。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14130873/viewspace-661945/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14130873/viewspace-661945/