必威体育Betway必威体育官网
当前位置:首页 > IT技术

数据库中常说的steal和force到底是什么

时间:2019-07-19 05:12:08来源:IT技术作者:seo实验室小编阅读:73次「手机版」
 

steal

时长在看一些database paper的时候看到steal和no-force的字样,深入了解了一下,发现我们平时关注的redo log个undo log都是有渊源的,什么时候需要redo log,什么时候需要undo log,什么时候两者都需要。英文好的可以直接去看上面的wiki,不好的可以看我总结的大白话吧。

steal/no-steal:

 是否允许一个uncommitted的事务将修改更新到磁盘,如果是steal策略,那么此时磁盘上就可能包含uncommitted的数据,因此系统需要记录undo log,以防事务abort时进行回滚(roll-back)。如果是no steal策略,就表示磁盘上不会存在uncommitted数据,因此无需回滚操作,也就无需记录undo log。

force/no-force:

    force策略表示事务在committed之后必须将所有更新立刻持久化到磁盘,这样会导致磁盘发生很多小的写操作(更可能是随机写)。no-force表示事务在committed之后可以不立即持久化到磁盘, 这样可以缓存很多的更新批量持久化到磁盘,这样可以降低磁盘操作次数(提升顺序写),但是如果committed之后发生crash,那么此时已经committed的事务数据将会丢失(因为还没有持久化到磁盘),因此系统需要记录redo log,在系统重启时候进行前滚(roll-forward)操作。       

总结

steal/no-steal主要决定了磁盘上是否会包含uncommitted的数据。force/no-force主要决定了磁盘上是否会不包含已经committed的数据。

现在DBMS常用的是steal/no-force策略,因此一般都需要记录redo log和undo log。这样可以获得较快的运行时性能,代价就是在数据库恢复(recovery)的时候需要做很多的事情,增大了系统重启的时间。

下图(来源于互联网)概括了各种策略搭配下的性能和要记录的log类型。

  

相关阅读

数据库原理之函数依赖、多值依赖

一、函数依赖(Functional Dependency)的概念函数依赖是数据依赖的一种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界

关系数据库的三大范式以及BCNF范式

转自:知乎链接:https://www.zhihu.com/question/24696366/answer/29189700首先要明白”范式(NF)”是什么意思。按照教材中的定义,范式

为什么oracle依旧是很多大公司数据库首选?

为什么大部分公司的数据库系统仍然要用Oracle?我认为Oracle之所以能占有这么大的市场份额,是因为其在海量数据的处理上更具有优势,并

关系型数据库设计总结

一、设计阶段流程 规划阶段:主要工作是对数据库的必要性和可行性进行分析。确定是否需要使用数据库,使用哪种类型的数据库,使用哪

MySQL 中的 information_schema 数据库

1. 概述 information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性

分享到:

栏目导航

推荐阅读

热门阅读