关于回滚段问题, 读了回滚段探究文章之后比较了解sql 运行时在不同操作下回滚段中存储的内容 。
不过现在对redo log 在不同操作下存储的内容不了解 。以下几种情况下redo log 中储存的数据块应该包含哪些内容呢 ?
1. insert into tab1(aa,bb,cc) values(1,2,'3') ; tab1表中原有数据10万笔, 插入语句在运行后,dirty data 在写入disk 前先通过lgwr将变化redo buffer 写入redo log , 那么这种情况下写入redo log 的内容仅仅是insert 到表tab1 中那一笔数据及相应的sql 操作 。
2. update tab2 set bb='red' where aa<=200 ; tab2 表中在sql 操作时的记录总数是1400 比, 被update 的记录数为 150 笔 ,那么在redo log 中记录这比交易的内容是被更新的150笔记录及相应的sql 操作 , 还是仅仅记录被更新的bb 字段及作为条件的aa 字段的及sql 操作, 还是其他 ?
3. delete tab2 where aa<=18 ; 那么redo log 中会记录sql操作及被删除的数据 ?
4. redo log 以binary 方式存储信息,那么 运行delete tab2 where aa<=18 , 会删除大约10万笔记录,大小大概60M , 用一个clear 的redo log 来记录这个transaction ,假设redo log file 大小100M ,那么redo log 中记录的内容大小和删除的记录大小是否差不多大小?
不过现在对redo log 在不同操作下存储的内容不了解 。以下几种情况下redo log 中储存的数据块应该包含哪些内容呢 ?
1. insert into tab1(aa,bb,cc) values(1,2,'3') ; tab1表中原有数据10万笔, 插入语句在运行后,dirty data 在写入disk 前先通过lgwr将变化redo buffer 写入redo log , 那么这种情况下写入redo log 的内容仅仅是insert 到表tab1 中那一笔数据及相应的sql 操作 。
2. update tab2 set bb='red' where aa<=200 ; tab2 表中在sql 操作时的记录总数是1400 比, 被update 的记录数为 150 笔 ,那么在redo log 中记录这比交易的内容是被更新的150笔记录及相应的sql 操作 , 还是仅仅记录被更新的bb 字段及作为条件的aa 字段的及sql 操作, 还是其他 ?
3. delete tab2 where aa<=18 ; 那么redo log 中会记录sql操作及被删除的数据 ?
4. redo log 以binary 方式存储信息,那么 运行delete tab2 where aa<=18 , 会删除大约10万笔记录,大小大概60M , 用一个clear 的redo log 来记录这个transaction ,假设redo log file 大小100M ,那么redo log 中记录的内容大小和删除的记录大小是否差不多大小?
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-592485/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-592485/