数据库相关的两个概念:事务和ACID

版权声明:访问者可将本人原创或翻译内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本人的合法权利。除此以外,将本人原创或翻译内容用于其他用途时,须征得本人的书面许可,并支付报酬。 https://blog.csdn.net/m0_38063172/article/details/82185606

在数据库相关的文章中,经常见到“事务”和“ACID”两个名词,越是司空见惯的东西越值得我们认真弄清楚它的意义。

事务与ACID的关系

很多地方都说ACID是事务的四个特性,这种说法其实过于笼统,而且不够准确。正确的说法应该是:ACID是对数据库进行操作(对数据库有更改)时应该具有的四个特性,事务(transaction)是满足ACID的一系列操作,ACID是对数据库进行操作时的要求,事务是数据库的操作逻辑单元,它满足了ACID,在不同的数据库中,事务的具体实现是不同的,但是都能保证满足ACID。

ACID分别代表什么

ACID是以下四个特性的英文首字母的组合,由Andreas ReuterTheo Härder于1983年确定下来。
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)

原子性

原子性顾名思义就是不可分割性,具体到数据库中指的是对数据库需要做的操作应该是一个整体,要么全部完成,要么干脆不改变数据库。需要做什么操作完全是自己定义的,如果你想更改一条记录,那么这一条记录就是一个整体,如果你想更改10条记录,那么这10条记录就是一个整体,要么全部完成,要么什么都不发生。

一致性

一致性和数据库中的约束、回滚和触发器等有关。指定的约束对所有和它有关的数据都有效,不会出现某些数据不遵守约束的情况;回滚之后的数据库状态和回滚针对的操作发生之前状态一致,没有差别;触发器对所有满足触发器触发条件的事件都做相同的操作。

隔离性

隔离性和数据库的并发有关,为了充分利用计算机资源,需要有并发机制,但是在数据库中如果只考虑到性能的话会出现问题。例如有一个对表t的读操作,同时有一个对表t的写操作,如果这两个操作同时进行的话从表t中读到的数据就不是”完整“的,也可以说从表t中读到的数据不属于表t的同一个状态,部分是修改前的,部分是修改后的。为了避免发生这种情况,应该把这两个操作隔离开,等写操作完成之后,再去读取表t中的数据。

持久性

持久性指的是对数据库的操作完成后,数据库的更改应该要保存到硬盘等持久性的存储介质中,这样发生系统崩溃和断电等情况时,数据库的更改不会丢失,数据库的状态还是更改后的状态。

猜你喜欢

转载自blog.csdn.net/m0_38063172/article/details/82185606