|
回复 #2 biti_rainy 的帖子
对于其他数据库我不清楚,但这里我有几点疑问:
(1) “对于update的时候通常需要通过索引去定位,否则全表扫描就很慢了” 这点我深有体会,一般在游标赋值时,会刻意去多读rowid列;
但对于“先删除后再插入”的操作,数据的删除如果没有通过索引访问,那不也需要全表扫描吗? 这也会浪费多的时间与资源。
(2) update时只会记录改变列,也就是您上面所说“a”变化前的值;但如果您先执行数据删除,不也会记录数据的undo与redo操作吗?
而且此时,回滚段中记录的就不单只是修改的一列或几列变化前的值,只是要记录所有列变化前的值; 这比update消耗应该更大!
“对于insert 则只是找个block直接插进去,在回滚段中记录一个rowid 就行”, 但可别忘记楼主的实现机制是先delete操作然后再insert。 |
|