事务相关

事务四大特征(ACID):

原子性

  • 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生要么都不发生。

一致性

  • 一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

隔离性

  • 隔离性是指在并发操作中,不同事务之间应该隔离开来,使每个并发中的事务不会互相干扰。

持久性

  • 持久性是指一旦事务提交成功,事务中所有的数据操作都必须被持久化保存到数据库中,即使提交事务后,数据库崩溃,在数据库重启时,也必须能保证通过某种机制恢复数据。

事务的隔离级别

Read uncommitted(读未提交)
  • A、B两人。A会读取到B正在修改的数据,B如果把事务回滚,A读到的数据就是脏数据。上述情况即为脏读。
Read committed(读已提交)
  • Oracle等大部分数据库默认的隔离级别。(不包括MySql)
  • A、B两人。场景:A去饭店消费,自己的卡里有100元,就在要刷卡的一瞬间,B以迅雷不及掩耳盗铃之势把卡里的100元转走了,A再去消费,会发现自己的卡里没钱了。上述情况即为不可重复读
Repeatable read(可重复读)
  • MySql的默认隔离级别。
  • A、B两人。现在的情况就是在A去查询或其他操作时,B不能去更新A正在操作的数据。但是B可以新添加数据。这样在A查询数据期间也会发生数据不一致的情况。上述情况即为幻读。
Serizable(串行化)
  • 级别最高的数据库隔离级别,可以避免上面所说的三种问题,但代价就是性能极慢,一般不会使用。

事务隔离级别 脏读 不可重复读 幻读
Read uncommitted
Read committed ×
Repeatable read × ×
Serizable × × ×
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容