Len Oberbrunner
Results
2
comments of
Len Oberbrunner
我的想法是这样的(以下情况均为缓存失效处理回滚记录的情况): 1.如果根据当前事务id从earliestResolveOperateForRollback中可以获取到上次最近的操作,就以最近的操作对应的非回滚记录的rs_id+scn为边界,找到上一个该事务非回滚的记录,那就找到了当前回滚记录对应的非回滚记录的undo_sql。 2.如果连earliestResolveOperateForRollback在该事务id下都是空的,就比较麻烦了。因为不知道当前scn的前面是否还有回滚记录,就无法将回滚和非回滚对应起来,那就得去找前面的所有(也不是所有,找到需要的回滚记录就返回即可)的非回滚和回滚的记录,然后就跟消消乐一样,回滚记录入栈遇到非回滚记录出栈,直到需要处理的回滚记录出栈了,就找到属于自己的非回滚记录的undo_sql;
 就比如这个事务,我的起始scn设置成1211748,项目也会有bug,应该找35行,实际找到了36行,应该先消消乐一波。