异步提交oracle,Oracle的异步commit设置

In Oracle 10gR2, you can now choose to break this fourth property. Oracle's new asynchronous commit

feature essentially allows you to trade durability for speed on a

transaction-by-transaction basis. You can choose to break ACID

compliance in this way by default, at the instance level; or you can

choose to break it at the individual transaction level.

By default, Oracle's commits are durable. Oracle writes your changes

to disk and doesn't return control of the session to you until it's

done. The normal commit process is as follows:

User begins transaction.

While user is issuing DML, Oracle generates redo entries

corresponding to the data changes. These redo entries are buffered in

memory while the transaction is occurring.

When the user issues a COMMIT, Oracle immediately writes this

buffered redo to disk, along with redo for the commit. Ie, a disk I/O

is forced.

Oracle does not return from the commit until the redo has been completely written to disk (to the online redo log).

There are two important aspects to note here: the redo information is written to disk immediately, and the session waits for the process to complete before returning.

Oracle now lets you change both of these aspects. You can let the

log writer write the redo information to disk in its own time, instead

of immediately; and you can have the commit return to you before it's

completed, instead of waiting.

Default COMMIT

behavior

New option

IMMEDIATE

The redo information is written to disk immediately

(forcing a disk I/O for each commit).

BATCH

Oracle buffers the redo information. The log writer

will write this redo information to disk, but in its own time. Thus, several

I/Os can be "batched".

WAIT

Oracle does not return from the commit until the commit

has completed successfully.

NOWAIT

Oracle doesn't wait for the commit to complete, but

returns right away.

You can change Oracle's commit behavior at the statement level by

simply specifying one or both of the new options above with your commit.

Use the new WRITE clause of the commit statement for this purpose.

For example:

COMMIT WRITE BATCH NOWAIT ;

will commit your transaction without forcing a disk I/O, and will

return control to you without waiting for the commit operation to

complete.

The full syntax of the new WRITE clause is:

COMMIT [WRITE [IMMEDIATE | BATCH] [WAIT | NOWAIT] ]

By default, if no WRITE clause is specified, a naked COMMIT is equivalent to

COMMIT WRITE IMMEDIATE WAIT;

You can even change the default behaviour of COMMIT at the instance

level, so that the default behaviour of a naked COMMIT statement is not

COMMIT WRITE IMMEDIATE WAIT. A new initialization parameter,

COMMIT_WRITE, lets you set default commit immediacy to IMMEDIATE or

BATCH, and default commit wait to WAIT or NOWAIT:

COMMIT_WRITE='{ IMMEDIATE | BATCH } , { WAIT | NOWAIT }'

修改参数的命令:

alter system set commit_write=batch,nowait scope=both;

在oracle 11g中该参数被标志为遗弃,由两个参数取代:

commit_logging和commit_wait

可以使用

alter system set commit_logging=batch scope=both;

alter system set commit_wait=nowait scope=both;

得到同样的效果[@more@]

oracle 异步 commit commit_write commit_logging commit_wait

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值