一个关于lgwr的问题,困惑已久

[复制链接]
查看11 | 回复9 | 2011-11-1 16:26:29 | 显示全部楼层 |阅读模式
请教大家一个关于lgwr的问题:
我有点费解的是很多书是说lgwr 写的前提是除了commit,还有log buffer满3分一或满1M等条件就触发写到磁盘的redolog上,
那如果有这样的一种情况用户修改了很多记录, 例如到了1M ,但不commit,那么那些log buffer写进去有什么意义呢?等下用户来个回滚事务 那么那些已经写进去的内容有怎么处理呢,是重新从redolog里删除吗?
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
这个机制和commit与否没关系其实~
别说些redo了~就算是你没commit,如果达到条件的话还会写入数据文件呢~
rollback也他自己的机制~这个不矛盾的
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
要相信oracle的頂尖工程師
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
log buffer写进去是要释放buffer空间吧,如果再commit时,这样花费的时间会很少,在性能上面有提升。
我是这样理解的,不知道对不对
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
log buffer 如果一直不 commit. 也不寫入 log file
database crash or reboot , SMON 怎麼 recover?
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
寻找检查点的RBA,从这个日志的地址点RBA开始,前滚已提交的事物,回滚未提交的事物
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
这样做很大的缩短了commit的时间
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
很简单,rollback跟redo没关系!
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
commit的执行率应该远大于rollback执行率吧。
再者,没有redo,database crash就无法恢复没有commit的事物修改了。
回复

使用道具 举报

千问 | 2011-11-1 16:26:29 | 显示全部楼层
statspace或者AWR有一项指标
Rollback per transaction %:
该项值过大须调整.因此rollback是小概率事件,是不受欢迎的。
lgwr的频繁写考虑的是commit的效率.这一机制是天然的,人们总是希望“对数据库的改动总是正确的”。
就像下棋一样,你不能老是悔棋,那样下棋会很困难。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行