MySql事务隔离级别

本文介绍了MySQL事务的概念,强调了ACID特性中的隔离性,并详细阐述了并发操作中可能出现的数据问题,包括脏写、脏读、不可重复读和幻读。同时,讨论了SQL的四种隔离级别,如读未提交、读已提交、可重复读和可串行化,及其在性能和数据一致性之间的权衡。

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

一、简述mysql事务

mysql是一个B/S架构的软件,那么同于同一个服务器来说,可以有若干个客户端来连接,每一个客户端连接与服务器连上后都可以称之为一个会话(session),每一个客户端都可以在自己的会话中向服务器发起一个请求语句,一个请求语句可能是某个事务的一部分,那么对于服务器来说可能处理多个事务。事务是具有ACID的特性,也就是隔离性。理论上当一个事务对数据进行访问时,其他的事务是不可以访问当前数据的,只能排队等候,只有在当前事务提交后才能访问该数据。但这样对于性能影响太大,即要保证事务的隔离性,又想要服务器访问同一数据的多个事务时性能高一些,就需要取舍了。

二、数据并发问题

1、脏写

事务A修改了另一个未提交事务B修改过的数据,就会出现脏写的情况。

2、脏读

事务A读取了已经被事务B更新但没有提交的字段。

3、不可重复读

事务A读取一个字段,事务B更新了该字段,之后事务A再次读取该字段发现值不相同了。

4、幻读

对于两个事务,事务A从一个表中读取了一个字段,然后事务B在该表中插入了一些新的行。之后事务A再去该表读取时,发现多了几行,就会产生幻读。

 

 这里的注意。是指明为插入才产生幻读,而在删除是不存在幻读的现象!

三、SQL中的四种隔离级别

由上我们可以得到事务在并发的过程中可能存在的问题

脏写>脏读>不可重复读>幻读

于是在sql中提出了四种隔离级别来解决上述的问题。

1、读为提交

2、读已提交(oracle默认隔离级别)

3、可重复读(mysql默认隔离级别)

4、可串行化

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值