写点什么

【荒于嬉】事务的特性及隔离级别

用户头像
luojiahu
关注
发布于: 2020 年 06 月 14 日
【荒于嬉】事务的特性及隔离级别

事务的特性

原子性(Atomicity)

不同于多线程编程中的原子操作概念,这里的原子性描述的是事务只有两种可能状态,要么全部成功,要么全部失败,不存在部分成功部分失败的状态。

一致性(Consistency)

一致性更多地不是事务本身的特性,而是借助于事务的其他特性(原子性和隔离性)能够获得的一种能力。可以理解为对于某种限制来说,当对其的读写操作添加事务后,能够获得对这种限制的持续保证,而不必担心其被打破。例如,转账双方的账户在转账发生前后,其金额总和不应改变。

隔离性(Isolation)

隔离性描述的是两个事务之间的可见状态,当一个事务的操作未完成提交时,其所执行的数据操作结果对另一个事务是不可见的。

持久性(Durability)

其实这个单词的翻译总觉得不够准确,我觉得还是不要嫌字数太多,翻译为持久化能力更为准确。描述的是,当事务提交后,数据库提供这样一种保证,即事务所进行的数据操作的结果都被存储在非易失性存储设备上。



事务的隔离级别

事务的隔离级别通常划分为:读未提交,读提交,可重复读与串行化四种。与之对应的,在这几种事务隔离级别下有可能发生的事务隔离现象,包括:脏读、不可重复读、写倾斜、幻读。这部分的知识由于概念本身比较晦涩,不同的概念之间又容易混淆,因此总是容易记忆混乱。作如下简单图形化记录,方便理解。

需要注意的是事务的隔离级别相关知识在涉及较广的知识面,此处只是简单记录。相关的技术点包括但不限于:多版本并发控制(MVCC)及其实现、谓词锁、索引区间锁(或又称间隙锁,next-key locking)、两阶段锁(2 Phase Locking))(共享锁、独占锁)(与两阶段提交2PC是基本无关的两个概念)、串行化快照隔离(Serializable Snapshot Isolation)、实体化冲突(一种避免写倾斜问题的技术手段)、当前读与快照读





发布于: 2020 年 06 月 14 日阅读数: 65
用户头像

luojiahu

关注

喜欢思考组织、过程、产品的后端开发 2017.01.08 加入

还未添加个人简介

评论

发布
暂无评论
【荒于嬉】事务的特性及隔离级别