数据库事务的四大特性

174 阅读2分钟

事务的四大特性: ACID

  • 原子性:事务执行要么全部成功,要么全部失败回滚。
  • 一致性:事务在提交之前和提交之后数据是一致的;例如A有100元,B有100元,A转给B 50元,那么A+B也还是200元。
  • 隔离性:并发事务的时候,每个事务开始到结束过程中都是相对独立的,不会受其他事物的影响。
  • 持久性:事务提交之后对数据的修改是持久的,哪怕这时服务器宕机了,也不会对这条数据有什么影响。 事务的原子性、隔离性、持久性都是为了一致性。

并发事务带来的几个问题:

  • 脏读: T1事务读取A=100数据并且进行修改A-10但是未提交,期间T2事务读取A数据并且修改A数据A+30,因为这个数据是修改了但是没提交的,依照脏数据做的操作是不正确的。
  • 不可重复读:T1事务多次读取A=100数据,期间T2事务读取A数据并且修改A数据A+30,此时在事务A中读取道的数据前后不一致。
  • 幻读: T1事务多次读取区间数据,期间T2事务新增/删除几条数据,此时在事务A中读取到区间内的数据条数不一致。

事务的隔离级别:

  • 读未提交:最低的隔离界别,允许读取到未提交的数据变更。
  • 读已提交:只能读取事务提交之后的数据。可以防止脏读的发生。但不能防止幻读和不可重复读。
  • 可重复读:对同一事务的多次读取结果都是一样的,除非是事务本省去修改,可以防止脏读和不可重复读。
  • 串行化 :最高的隔离级别,所有的事务都依次执行 这样事物之间就互不干扰,该级别可防止脏读,不可重复读以及幻读。

以上内容是在面试复习过程中遇到觉得比较重要的模块,以此作为复习过的记录,如有说法有不准确请各位大牛多多指正