专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

事务的4个特性以及事务的隔离级别有哪些?

ins518 2024-10-21 07:59:41 技术文章 12 ℃ 0 评论

小编注:常规问题,几乎必问,理解不了建议背过。

事务的4个特性是指ACID:

原子性(Atomic):一个事务中的所有操作,要不全部完成,要不全部都没完成,不会结束在某个中间环节。事务执行过程中发生错误会回滚。

一致性(Consistency):事务执行前后,数据库的完整性没有被破环。原有的约束和触发器等均保持。

隔离性(Isolation):数据库允许多个事务并发读写。隔离性通过不同的级别,可以保证数据的一致性。分为:读未提交(read uncommited)、读提交(read commited)、可重复读(repetable read)和串行化(serializable)

持久性(Durability):事务处理结束后,即使系统故障也能保证数据的修改是永久的。


小编注:其中除了隔离性,其他三点都很好理解。面试一般问的重点,就是隔离性。

实际生产中,由于事务的并发执行的,所以会存在3类问题:

1. 脏读:事务A读取了事务B更新的数据,然后事务B回滚了,事务A读到的这个数据就称为脏数据

2. 不可重复读:事务A多次读取事务B的数据,但是事务B更新并提交了多次,导致事务A多次读取的数据不一致

3. 幻读:事务A选择了某个条件的多行记录,并进行了操作。此时事务B又额外插入了一行符合事务A这个条件的记录,结果事务A操作完成之后,发现了B的插入数据没有操作,就好似发生了幻觉一样。

其中不可重复度和幻读有些类似。

重点在于:不可重复读侧重于现有数据的修改,而幻读侧重于增删数据。


最后:mysql和oracle的默认事务隔离级别你知道吗?

  • Mysql: repeatable read 可重复度
  • Oracle: read commited 读已提交

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表