增强的commit--异步提交

增强的 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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值