【MySQL】事务的特性和隔离级别

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

在这里插入图片描述



数据库事务代表了对数据库进行的一系列修改操作。

这些操作要么全部执行,要么都不执行,事务保证了数据的完整性和一致性


一、事物的基本特性 ACID

1.原子性(Atomicity)

事务中的全部操作在数据库中是不可分割的,要么全部完成,要么全不执行

事务是最小工作单元,不可再分

2.一致性(Consistency)

事务必须使数据库从一个一致性的状态变换到另一个一致性的状态

数据库的完整性约束不能被破坏

3.隔离性(Isolation)

在事务完成之前,对于外部是不可见的。即一个事务不能看到其他未完成的事务所做出的修改。

多个事务互不影响

4.持久性(Durability)

对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失

持久保存到本地 事务–>提交 数据发生改变是永久的


二、事物的隔离级别

由低到高:

1.读未提交(Read Uncommitted

允许一个事务读取另一个未提交事务的数据(脏读)

2.读已提交(Read Committed

一个事务要等到另一个事务提交后才能读取数据。解决了脏读的问题,只会读取提交后的数据

可能会出现两次读取结果不一致(不可重复读)

3.可重复读(Repeatable Read

MySQL 的默认隔离级别

在事务开始读取数据时,不允许其他事务对数据进行修改操作。解决了脏读和不可重复读的问题

可能出现每次读取的数据都一样(幻读)

4.串行化(Serializable

给每一行数据加锁。开销较大并且存在竞争问题。一般不使用

一般来说,隔离级别越高,数据一致性越强,但并发性能越差。


三、并发问题

1.脏读

一个事务读取到了另一个事务未提交的数据操作结果。

2.不可重复读

一个事务对同一行数据重复读取两次,但是得到了不同的结果。

3.幻读

第二次查询的结果包含了第一次查询中未出现的数据或者缺少了第一次查询中出现的数据。


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天喜Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值