事务隔离级别如何影响数据库的MVCC实现?
- 内容介绍
- 文章标签
- 相关推荐
本文共计10516个文字,预计阅读时间需要43分钟。
数据库中提到ACID属性,你会联想到事务,进而可能想起曾经背过的ACID乱炖。不知你是否想过这个问题:为什么偏偏给隔离性设了这么多条件?
提到数据库,你多半会联想到事务,进而还可能想起曾经背得滚瓜乱熟的ACID,不知道你有没有想过这个问题,事务有原子性、隔离性、一致性和持久性四大特性,为什么偏偏给隔离性设置了级别? 一切还得从事务说起。提到数据库,你多半会联想到事务,进而还可能想起曾经背得滚瓜乱熟的ACID,不知道你有没有想过这个问题,事务有原子性、隔离性、一致性和持久性四大特性,为什么偏偏给隔离性设置了级别?
一切还得从事务说起。
1. 事务(transaction)的起源学习数据库事务的时候,一个典型的案例就是「转账」,这篇文章也不能免俗,故事就从招财向陀螺借100块钱开始吧。
一个看似非常简单的现实世界的状态转换,转换成数据库中的操作却并没有那么单纯。这个看起来很简单的借钱操作至少包含了两个动作:
- 陀螺的账户余额-100
- 招财的账户余额+100
要保证转账操作的成功,数据库必须把这两个操作作为一个逻辑整体来执行,这个逻辑整体就是一个事务。
1.1. 事务的定义事务就是包含有限个(单条或多条)数据库操作(增删改查)的、最小的逻辑工作单元(不可再分)。
说到这里不得不吐槽一下,事务的英文是transaction,直译为“交易”的意思,但是不知道为什么被意译成了“事务”,让人很难从字面上理解这个概念的含义。
中国人对翻译的“信达雅”的偏执在计算机领域或多或少有点不讨喜。
本文共计10516个文字,预计阅读时间需要43分钟。
数据库中提到ACID属性,你会联想到事务,进而可能想起曾经背过的ACID乱炖。不知你是否想过这个问题:为什么偏偏给隔离性设了这么多条件?
提到数据库,你多半会联想到事务,进而还可能想起曾经背得滚瓜乱熟的ACID,不知道你有没有想过这个问题,事务有原子性、隔离性、一致性和持久性四大特性,为什么偏偏给隔离性设置了级别? 一切还得从事务说起。提到数据库,你多半会联想到事务,进而还可能想起曾经背得滚瓜乱熟的ACID,不知道你有没有想过这个问题,事务有原子性、隔离性、一致性和持久性四大特性,为什么偏偏给隔离性设置了级别?
一切还得从事务说起。
1. 事务(transaction)的起源学习数据库事务的时候,一个典型的案例就是「转账」,这篇文章也不能免俗,故事就从招财向陀螺借100块钱开始吧。
一个看似非常简单的现实世界的状态转换,转换成数据库中的操作却并没有那么单纯。这个看起来很简单的借钱操作至少包含了两个动作:
- 陀螺的账户余额-100
- 招财的账户余额+100
要保证转账操作的成功,数据库必须把这两个操作作为一个逻辑整体来执行,这个逻辑整体就是一个事务。
1.1. 事务的定义事务就是包含有限个(单条或多条)数据库操作(增删改查)的、最小的逻辑工作单元(不可再分)。
说到这里不得不吐槽一下,事务的英文是transaction,直译为“交易”的意思,但是不知道为什么被意译成了“事务”,让人很难从字面上理解这个概念的含义。
中国人对翻译的“信达雅”的偏执在计算机领域或多或少有点不讨喜。

