面试笔记 | 数据库事务的四个特性ACID

数据库事务的四个特性

事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元

事务具有4个基本特征,简称ACID,分别是:

  • 原子性Atomicity
  • 一致性Consistency
  • 隔离性Isolation
  • 持久性Duration

01 原子性Atomicity

原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要么完全应用到数据库,如果操作失败则不能对数据库有任何影响。

  • 事务被视为不可分隔的最小单位。

02 一致性Consistency

一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。

  • 在一致性状态下,所有事务对一个数据的读取结果都是相同的。

比如,A与B之间进行多次转账,但是A和B总共的钱是不变的。

03 隔离性Isolation

隔离性是当多个用户并发访问数据库时,多个并发事务之间要相互隔离,一个事务不应该影响其他其他事务运行效果。

  • 同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。
  • 一个事务所做的修改在最终提交前,对其他事务是不可见的。

比如,A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。

不同的隔离级别:

Read Uncommitted 读取未提交内容
  • 最低的隔离级别,什么都不需要做,一个事务可以读到另一个事务未提交的结果。
  • 所有的并发事务问题都会发生。
Read Committed 读取提交内容
  • 只有在事务提交后,其更新结果才会被其他事务看见。
  • 可以解决脏读问题。
Repeated Read 可重复读
  • 在一个事务中,对于同一份数据的读取结果总是相同的,无论是否有其他事务对这份数据进行操作,以及这个事务是否提交。
  • 可以解决脏读、不可重复读。
Serialization 可串行化
  • 事务串行化执行,隔离级别最高,牺牲了系统的并发性。
  • 可以解决并发事务的所有问题。

04 持久性Durability

持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章