MySQL事务隔离级别及设置方法

MySQL事务

1,事务的四大特性

四大特性即:

  • 原子性:一组操作封装为一个执行单元,该组操作指令只能同时成功或者同时失败。
  • 一致性:事务执行前后数据的状态和合法性是一致的。
  • 隔离性:事务之间具有隔离性,根据隔离级别确定影响的大小。
  • 持久性:事务执行完毕后,数据会被永久改变,持久化到磁盘上。

2,事务的隔离级别

事务之间的执行具有四种影响的现象,由低到高依次排列为:

  • 脏写:事务a修改了事务b修改了但未提交的数值,事务a回滚,导致事务b写入的数值丢失。
  • 脏读:读取到别的事务写入的临时数据,事务回滚了,数值丢失。
  • 不可重复读:读取到的数据被其他事务修改了,再次读取时数据不一致。
  • 幻读:事务读取到了其他事务提交的临时数据,下次再次读取时,事务回滚了,之前读取的数据不存在了。

MySQL对此的解决方案,设置隔离级别,分别为:

隔离级别解决问题
读未提交(READ UNCOMMITTED)+=脏写
读已提交(READ COMMITTED)+=脏读
可重复读(REPEATABLE READ)+=不可重复读取
序列化(SERIALIZABLE)+=幻读

MySQL默认的事务隔离级别为不可重复读。

手动设置隔离级别

SET [GLOBAL|SESSION] TRANSACTION ISOLATION LEVEL 隔离级别;
#其中,隔离级别格式:
> READ UNCOMMITTED
> READ COMMITTED
> REPEATABLE READ
> SERIALIZABLE

或者

SET [GLOBAL|SESSION] TRANSACTION_ISOLATION = '隔离级别'
#其中,隔离级别格式:
> READ-UNCOMMITTED
> READ-COMMITTED
> REPEATABLE-READ
> SERIALIZABLE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值