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

并发事务问题、隔离级别

并发事务问题、隔离级别

并发事务的问题:脏读、不可重复读、幻读

  1. 脏读:一个事务读到了另一个事务还没有提交的数据,就是脏读。如下图,事务A进行了一次查询之后再进行了修改数据的操作,这时候事务B去查询了数据,但是事务A的修改操作还没有提交,事务B就读到了修改之后的新的数据。这就是脏读。

    image

  2. 不可重复读:一个事务先后读取同一条数据,但是两次读取的数据不一致,就是不可重复读。如下图,事务A先进行了一次读取,之后事务B就进行了修改并且提交了数据,事务A在这之后又查询了数据,但是这两次的数据不一致,就是不可重复读。

    image

  3. 幻读:一个事务按照条件查询数据的时候,没有对应的数据行,但是在插入数据的时候发现这个数据已经存在了,这就是幻读。如下图,当事务A去查询数据的时候发现不存在,当事务A要插入数据的时候事务B就先插入了数据并提交了事务,那么事务A就插入不进去数据,随后事务A去查询的时候,获取的依旧是空的数据。前提是已经解决了不可重复读的问题,否则第二次读取就能读取到数据。

    image

这些问题可以通过:对事务进行隔离解决。

隔离级别:读未提交、读已提交、可重复读、串行化

image

  1. 未提交读(RU):不能解决并发事务的问题,一般我们也不使用这个级别。
  2. 读已提交(RC):只能解决脏读的问题。
  3. 可重复读(RR):解决了脏读和不可重复读的问题,但是会出现幻读的问题。MySQL默认的就是可重复读。
  4. 串行化:解决了并发事务的三个问题,但是效率是比较低的。(一个事务提交之后,其他的事务才能运行),因为这个效率极低所以一般不会去使用的。

并发事务带来那些问题呢?如何解决?MySQL的默认隔离级别是?

  1. 事务带来的问题是 脏读、不可重复读、幻读。
  2. 通过事务隔离级别可以解决。分别有 未提交读(它不能解决并发事务的任何问题)、读已提交(它解决了脏读的问题)、可重复读(它解决了脏读和不可重复读的问题)、串行化(它解决了脏读、不可重复读、幻读的问题但是性能很低)。
  3. MySQL默认的隔离级别是可重复读的级别。

为什么MySQL默认使用RR隔离级别?

MySQL默认使用RR是基于历史和技术考虑的,可重复读隔离级别,在更新数据时会增加记录锁和间隙锁,可以避免事务乱序导致的数据不一致的问题。

http://www.dtcms.com/a/396176.html

相关文章:

  • 自动驾驶的车辆电子电气(E/E)架构拓扑的设计原则 --- 系统划分与权衡参数
  • 定制网站和模板建站哪个更好用react做的网站上传
  • 郑州网站建设需要多少钱网站做二级域名干什么用
  • 为什么网站浏览不是做的那样网站页面
  • 做网站参考文献asp系统网站怎么做优化
  • NCSS 2025 最新安装教程(图文详解)
  • 河北城乡住房建设厅网站西部数码网站管理系统
  • 网站制作手机端wordpress 脚本
  • 网站制作 番禺wordpress自建站
  • 淘客网站app建设wordpress 777
  • 荆门做网站的公司中信建设有限责任公司陶杨
  • 湖南省建设厅田明革简介网站优化软件开发
  • 电子商城网站建站客crm网站
  • 外贸一般上什么网站运营托管公司
  • 北京手机版网站制作恩施seo
  • 为什么现在建设银行要下载网站激活码网站建设与管理维护说课
  • 公众号做网站华强北网上商城
  • 时尚类网站建设西安市网站制作公司
  • 【完整源码+数据集+部署教程】眼结膜分割系统: yolov8-seg-C2f-ODConv
  • 网站模版修改在wordpress上添加播放视频教程
  • 北流做网站网站建设模式怎么写
  • Pythoner GIS 开发里最核心的4个基础组件(理论+实操篇)
  • 有哪些做鞋机设备的网站网站建设是怎么赚钱的
  • 封面型网页网站有哪些内容ui设计是什么职业
  • 有什么网站可以做家装长治网站制作怎么做
  • 人群密集检测技术:智能视觉赋能公共安全管理新范式
  • 一文读懂 RNN 循环神经网络
  • 如何做漫画赚钱的网站桂林北站有核酸检测点吗
  • 建设网站工作报告国外做任务网站有哪些
  • 七、MyBatis(一)