MySQL事物

什么是事物?

事物是为了保持数据的一致性而提出的概念。
举例来说:小李要给小张转100元,则小李的账户里要少100元,而小张的账户要增加100元,这两个updata语句必须作为一个整体来执行,从而保证数据的一致性这就是事物。

事物的特性

事物应该具有:原子性、一致性、隔离性、持久性四个属性。这四个属性通常称为ACID特性。

  1. 原子性(atomicity):一个事物是一个不可分割的整体,事物中包括的所有操作要么都做要么都不做。
  2. 一致性(consistency):事物必须使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的不可分的。
  3. 隔离性(isolation):隔离性是指相对于其他事物来说,一个事物的执行不能被其他事物干扰,即一个事物内部的操作及使用的数据对并发的其他事物是隔离的,互不干扰的。
  4. 持久性(durability):持久性也称永久性,指一个事物一旦提交,他对数据库的改变就是永久性的。

事物并发问题

  1. 脏读:事物A读取了事物B更新的数据,然后B做了回滚操作,则事物A读取到的数据就是脏数据。
  2. 不可重复度:事物A多次读取同一数据,事物B在事物A多次读取的过程中对数据作了更新,导致A多次读取统一数据时结果不一致。
  3. 幻读:管理员A将数据库中所有学生的性别从具体性别改为1为男0为女,但是管理员B就在这个时候插入了一条具有具体性别的数据,当管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。

事物的隔离级别及作用

MySQL事物