【事务隔离级别】

事务的ACID特性:

  1. 原子性(Atomicity):事务要么全部被执行,要么全部不被执行。
  2. 一致性(Consistency):事物的执行使数据库从一种正确的状态转换到另一种正确的状态。
  3. 隔离性(Isolation):一个事物的执行不能被其他事务所影响。
  4. 持久性(Durability):事务一旦提交,就会永久的保存在数据库中。

隔离级别:读未提交(Read Uncommitted)、读提交(Read Committed)、可重复读取(Repeatable Read)、序列化(Serializable)

  • 脏读:事务A读到了事务B未提交的数据,但随后事务B回滚。
  • 不可重复读:事务A在两次查询所获得的同一条数据不一致。原因是事务B在事务A进行的过程中对数据进行了修改(update)并提交。
  • 幻读:事务A在两次查询中所获得的的数据条数不一致。原因是事务B在事务A进行的过程中进行了插入或删除(insert or delete)并提交。

为了解决以上问题,数据库设置了四种隔离级别

  • 读未提交:最低的隔离级别,会出现 脏读、不可重复读、幻读
  • 读提交:限制不能读到其他事务未提交的数据,会出现不可重复度、幻读。
  • 可重复读:在有事务进行读取时,不允许其他事物进行修改(update)操作,会出现幻读。
  • 序列化:事务串行执行,不允许并发。

事务的隔离级别越高,安全性越好,但同时也在影响程序的效率。

Oracle默认隔离级别Read Committed
MySQL默认隔离级别Repeatable Read

posted @ 2023-06-12 14:39  沉淀i  阅读(52)  评论(0)    收藏  举报  来源