当前位置: 首页 > news >正文

二十六、MySQL并发事务问题:脏读/不可重复读/幻读

1、事务的隔离级别

(1)隔离级别

Read uncommitted # 读,未提交

Read committed # 读,已提交

Repeatable Read(默认) # 可重复读

Serializable # 串读

(2)基础语法

set transaction isolation level 事务的隔离级别

 2、脏读

(1)脏读演示

·【1】将事务的隔离级别设置为“读,未提交”;

·【2】开启两个独立的事务;

·【3】在左边事务中,显示account表的所有数据;

·【4】在右边事务中,修改account表中数据(jom的money数据),此时右边表中的数据改动未提交

·【5】在左边事务中,再次显示account表中所有数据,可以看到,account表中数据出现变动,这是因为左边事务受到了右边事务的影响,导致数据出现了错误。

(2)避免脏读

        【1】将事务的隔离程度设置为“读,已提交”,再按照上述顺序执行【2】、【3】、【4】、【5】、【6】即可,发现并未出现脏读变化

 3、不可重复读

(1)不可重复读演示

·【1】将事务的隔离程度设置为“读,已提交”,开启左右两个事务;

·【2】左边事务查看account表中所有数据;

·【3】右边事务修改表中数据;

·【4】再次调用select,左边事务查看account表中所有数据;

·【5】提交右边事务数据;

·【6】再次调用select,左边事务查看account表中所有数据,发现两次account表中数据显示不一致

(2) 避免不可重复读

·【1】将左边事务隔离程度设置为“可重复读”,左右开启事务;

·【2】左边事务调用select语句,显示account表中所有数据;

·【3】右边事务修改account表中数据;

·【4】提交右边事务;

·【5】左边事务调用select语句,再次显示account表中所有数据,发现数据并未发生改变

4、幻读

(1)幻读演示

·【1】将事务的隔离级别设置为“可重复读”;

·【2】左右两边开启事务;

·【3】左边事务调用select函数,查看account表中id=3的行数据,发现account中并不存在id=3的行数据;

·【4】右边事务调用insert函数,给account表中田间id=3的行数据;

·【5】左边事务再次调用insert函数,给account添加id=3的行数据,MySQL会提示错误“id=3已被占用”;

·【6】在左边事务调用select函数,查看id=3的行数据,发现id=3的行数据并不存在

(2) 避免幻读

        【1】将事务的隔离级别设置为串读,其余再如上执行即可。

 

http://www.lryc.cn/news/176119.html

相关文章:

  • RK3588平台开发系列讲解(项目篇)视频监控之RTMP推流
  • http基础教程(超详细)
  • Vue3 <script setup> 单文件组件 组合式 API 相关语法
  • 为什么说网络安全是IT行业最后的红利?是风口行业?
  • DD5 进制转换
  • 操作系统权限提升(二十七)之数据库提权-MySQL MOF提权
  • springcloud:四、nacos介绍+启动+服务分级存储模型/集群+NacosRule负载均衡
  • 人生第一个java项目 学生管理系统
  • Oracle统计信息手动收集与修改
  • 鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统
  • ubuntu安装freeswitch 1.10.10
  • 什么类型的企业适合应用RPA?
  • LuatOS-SOC接口文档(air780E)-- fdb - kv数据库,掉电不丢数据
  • 世界500强都摒弃使用FTP的真实原因
  • 医院电子病历编辑器,EMRE(EMR Editor)源码
  • 分享从零开始学习网络设备配置--任务3.8 使用动态路由OSPF实现网络连通
  • 构建高效的同城O2O外卖系统APP:技术要点和最佳实践
  • 【残差网络ResNet:残差块输入输出形状控制】
  • 【编译和链接——详解】
  • 【python爬虫】爬虫所需要的爬虫代理ip是什么?
  • 酒店预订小程序制作详细步骤解析
  • Intel汇编语言程序设计(第7版)第六章编程学习过程中写的小例子
  • ElementUI之动态树+数据表格+分页
  • ReferenceError: primordials is not defined错误解决
  • 【Element-UI】实现动态树、数据表格及分页效果
  • 解决仪器掉线备忘
  • Java面向对象高级
  • 渗透测试信息收集方法和工具分享
  • Unity打包出来的APK文件有问题总结
  • 记录:移动设备软件开发(Activity的显式启动和隐式启动)