|
本帖最后由 Yong Huang 于 2012-8-24 09:53 编辑
> 由于组提交的原因,比如某一session执行了commit操作的话,那么其他session所属的private strand中的redo信息也都要随之一起被写入redo 文件中吧?
Are you sure when one session commits, another session's private redo will also be flushed and written to the logfile? I just did a simple test. It's Oracle 11.2.0.1, not RAC, no supplemental logging, no flashback database:
Session 2 records session 1's redo size statistic, 0. Session 1 makes a small (< 128kb on 64-bit Oracle) transaction (insert a row into a one number column table). Session 2 says session 1's redo size remains 0 (the redo is in private redo, not visible in v$sesstat). Session 3 makes a transaction and commits. Session 2 reports session 1's redo size is still 0. It changes to non-zero when it commits (or rolls back) its own transaction.
If my session 1 had flushed its private redo to public redo when session 3 committed, session 1's redo size statistic would be immediately shown in v$sesstat.
Your second message is about reduced redo allocation latch gets because of private redo. I'm sure that's true. I don't know the details. Think of some good tests and share with us. |
|