数据库中窃取与强制的区别

时间:2015-10-19 15:39:38

标签: recovery

据说没有窃取意味着事务的更新缓冲区在事务提交之前没有被写入磁盘,没有力量具有类似的定义,那么它们之间的区别是什么?

1 个答案:

答案 0 :(得分:23)

假设事务T1想要读取数据对象X,但工作内存已满,所有其他事务都工作。所以T1需要清除一些内存,它通过将工作内存中的其他页面踢到稳定存储来实现。这可能是危险的,因为我们无法确定T1正在推动稳定存储的问题。这被称为偷窃。

强制意味着每次事务提交时,所有受影响的页面都将被推送到稳定存储。这是低效的,因为每个页面可能被许多事务写入并且会降低系统速度。

大多数崩溃恢复使用窃取/非强制方法,接受将可能未提交的数据写入内存以获得不强制所有提交效果到内存的速度的风险。