【事务隔离级别】

文章介绍了数据库事务的四大特性——原子性、一致性、隔离性和持久性,以及不同隔离级别下可能出现的问题,如脏读、不可重复读和幻读。针对这些问题,数据库提供了四种隔离级别:读未提交、读提交、可重复读和序列化。较高的隔离级别虽然能提高安全性,但可能影响效率。文中提到Oracle的默认隔离级别是ReadCommitted,而MySQL则是RepeatableRead。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事务的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值