增强的 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 语句后面有子句,则该子句优先。 此选项不可用于分布式事务处理。[@more@]
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/197458/viewspace-1008456/
,如需转载,请注明出处,否则将追究法律责任。