加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

怎么在mysql中实现事务的隔离等级

发布时间:2022-02-15 03:48:17 所属栏目:MySql教程 来源:互联网
导读:这篇文章给大家介绍怎么在mysql中实现事务的隔离级别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 事务就是一组一起成功或一起失败的sql语句。事务还应该具备,原子性,一致性,隔离性和持久性。 一、事务的基本要素 (ACID) 1、
        这篇文章给大家介绍怎么在mysql中实现事务的隔离级别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
 
        事务就是一组一起成功或一起失败的sql语句。事务还应该具备,原子性,一致性,隔离性和持久性。
 
一、事务的基本要素 (ACID)
 
1、原子性:事务开始后,所有的操作,要么全部成功,要么全部失败,不可能处于中间状态,事务是一个不可分割的整体,就像原子一样。
 
2、一致性:事务开始前和结束后,数据库的完整性约束没有破坏,A向B转账,A扣了钱,但B却没到账。
 
3、隔离性:同时发生的事务(并发事务)不应该导致数据库处于不一致的状态中,每个事务都独立执行,不影响其他事务的存在。
 
4、持久性:事务对数据库的更改都会保存在磁盘上,不会丢失。
 
二、事务的并发问题
 
1、脏读:事务A读取了事务B未提交的写入数据,读取到的数据就称为脏数据
 
2、不可重复读:事务A多次读取同一数据,但在读取过程中,事务B对数据做了修改,并提交了。导致多次读取同一数据,结果不一样。
 
3、幻读:事务A对表中所有数据行进行了修改,比如设置status = 1,但同时,事务B往该表插入了一行新数据status = 0,对于操作事务A的用户而言,表中还有一条记录没被修改,就像发生幻觉一样。
 
三、事务隔离性的四个级别
 
事务隔离级别 脏读 不可重复读 幻读
读取未提交 read uncommitted
 
四、获取和设置数据库隔离级别
 
SHOW VARIABLES LIKE '%isolation%';
SHOW GLOBAL VARIABLES LIKE '%isolation%';
使用系统变量查询
 
SELECT @@GLOBAL.tx_isolation;
SELECT @@SESSION.tx_isolation;
SELECT @@tx_isolation;
对于mysql8而言,使用下面的变量进行查询
 
SELECT @@GLOBAL.transaction_isolation;
SELECT @@SESSION.transaction_isolation;
SELECT @@transaction_isolation;
设置隔离级别
 
SET GLOBAL tx_isolation = '隔离级别';
SET SESSION tx_isolation = '隔离级别';
SET @@tx_isolation = '隔离级别';
对于mysql8而言,使用下面语句进行设置
 
SET GLOBAL transaction_isolation = '隔离级别';
SET SESSION transaction_isolation = '隔离级别';
SET @@transaction_isolation = '隔离级别';

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读