log buffer的管理分为两个部分,一部分是生成重做记录, 一部分是重做记录写入联机日志文件
当有多个更新语句被用户发出时, 日志缓冲区的结构大概如下:
行号 事务id file# blk# row column value
1 T20 2 39 - - 289
2 T20 5 498 220 3 190
3 T9 2 90 - - hhh
4 T9 9 100 20 9 xxx
5 T9 commit SCN timestamp
6 T18 2 189 - - 18
7 T18 10 29 300 10 20
8 T18 commit SCN timestamp
这批重做记录中, 存在两个commit , 但LGWR 不会分成两次来写, 而是一次就将他们全部写入 。
commit 或 rollback 都会触发LGWR将log buffer的重做记录写入联机日志文件,这里重做记录中有两个commit,
在第一个commit 就应该触发LGWR , 为什么书上写的是 “LGWR 不会分成两次来写, 而是一次就将他们全部写入” ?
这样说矛盾吗 ?
当有多个更新语句被用户发出时, 日志缓冲区的结构大概如下:
行号 事务id file# blk# row column value
1 T20 2 39 - - 289
2 T20 5 498 220 3 190
3 T9 2 90 - - hhh
4 T9 9 100 20 9 xxx
5 T9 commit SCN timestamp
6 T18 2 189 - - 18
7 T18 10 29 300 10 20
8 T18 commit SCN timestamp
这批重做记录中, 存在两个commit , 但LGWR 不会分成两次来写, 而是一次就将他们全部写入 。
commit 或 rollback 都会触发LGWR将log buffer的重做记录写入联机日志文件,这里重做记录中有两个commit,
在第一个commit 就应该触发LGWR , 为什么书上写的是 “LGWR 不会分成两次来写, 而是一次就将他们全部写入” ?
这样说矛盾吗 ?
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-664428/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-664428/
本文探讨了数据库中logbuffer的工作原理及LGWR进程如何处理重做记录。特别关注于多个更新语句并发时,LGWR如何将包含多个commit的重做记录一次性写入联机日志文件的过程。
1805

被折叠的 条评论
为什么被折叠?



