问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

你真的懂数据库的隔离级别吗?不懂请进

发布网友 发布时间:2024-09-28 15:05

我来回答

1个回答

热心网友 时间:2024-09-29 04:55

哎呀妈,又是数据库的隔离级别,大家都要听吐了,每次面试或者和数据库相关的技术分享总会提到数据库的隔离级别,大家真的搞清楚了吗,每种隔离级别都有什么特点,我们该如何选择合适的事物隔离级别。(本文仅针对MySQL数据库介绍)

1 MySQL的事物隔离级别是为了解决什么问题?

事物隔离级别是为了解决事物并发问题。

事物并发问题其实就和我们在编写并发程序时的线程安全问题是类似的,线程安全问题是多个线程同时修改了一个变量,如果不加锁,就可能出现类似于超卖这种类型的问题。事物并发,是多个客户端连接同时修改数据库的某条记录也可能会出现类似的问题,并且事物是会发生回滚的,这就又加重了问题的复杂程度。

我们将事物并发问题总结起来,就是以下几种:

脏读: 事务A读取了事务B修改的数据,然后事物B回滚,那么事物A读取到的数据是脏数据

不可重复读: 事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取到的同一数据时不一致。

幻读: 事物A将数据库中所有数据修改为另一种形式,但是事物B就在这个时候插入了一条新的数据,事物A修改结束后发现仍有一条记录没有修改过来,就像发生了幻觉一样,这就叫幻读。

总结:

不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。

解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁整张表。

2 MySQL中都有哪些隔离级别?

SQL的标准就是定义了四种隔离级别,

基于上诉事物并发问题,MySQL为我们提供了几种解决方案,就是如下几种(√ 选的是会出现问题的)

事务隔离级别脏读不可重复读幻读读未提交(read-uncommitted)√√√读已提交(read-committed)√√可重复读(repeatable-read)默认(√)串行化(serializable)

每一种隔离级别其实也就是锁的级别,什么问题都忽略即不加锁,什么问题都解决即将并行执行转为串行执行。

随着加锁的程度越来越强,数据库的并发性能越来越弱。

3 MySQL的每种隔离级别都会加什么锁?

读未提交(性能优,问题多)

加锁情况:

事务在读数据的时候并未对数据加锁。

事务在修改数据的时候只对数据增加行级共享锁。

读已提交(互联网常常使用的隔离级别,性能优)

读已提交其实是针对于事物而言,不读取没有提交的事物,这样就不会产生脏读。

读已提交的事务隔离级别是大多数流行数据库的默认事务隔离界别,比如 Oracle,但是不是 MySQL 的默认隔离界别。

加锁情况:只会对索引增加 Record Lock

事务在更新数据的瞬间(就是发生更新的瞬间),必须先对其加行级排他锁,直到事务结束才释放。

事务对当前被读取的数据加行级共享锁(当读到时才加锁),一旦读完该行,立即释放该行级共享锁;

可重复读

可重复读是将读取到的数据锁定起来,保证在事物内,读取到的数据是一致的。

MySQL为了解决幻读问题增加了 Gap Lock 和 Next-Key Lock(可通过配置文件设置);

加锁情况:为了解决幻读的问题,在支持 Record Lock 的同时,还支持 Gap Lock 和 Next-Key Lock;

事务在读取某数据的瞬间(就是开始读取的瞬间),加行级共享锁,直到事务结束才释放;

事务在更新某数据的瞬间(就是发生更新的瞬间),加行级排他锁,直到事务结束才释放。

串行化

直接把并行变为串行,相当于单线程执行任务,性能极低,一般不会使用。

加锁情况:

事务在读取数据时,必须先对其加表级共享锁 ,直到事务结束才释放;

事务在更新数据时,必须先对其加表级排他锁 ,直到事务结束才释放。

推荐两篇之前写的博文:

如果对MySQL锁概念不了解的可以阅读《MYSQL的锁介绍》。

MySQL为了优化加锁的性能,采用了MVCC多版本并发控制,如果不了解可以阅读《MySQL中的MVCC是怎么实现的,你们知道吗?》。

4 总结

事物的隔离级别就是数据库为我们提供了选择的权利,在性能和数据准确程度上,根据业务做取舍,有舍必有得。

对于MySQL来说InnonDB引擎才会有事物和事物隔离级别的说法。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 如何打开苹果iPhone7手机中的虚拟HOME键(小圆点)? 如何关闭iPhone7的小白点? 我在领取失业金的同时可以办理工商个体户吗??无锡本地户口 手机拍照怎么换白背景? 抖音短视频剪辑用什么软件 抖音上面求婚的音乐浪漫求婚背景音乐推荐 幼儿园亲子运动会家长代表发言稿范文 网络刷钱是什么意思呀? 新型“黄牛”代抢火车票一张收百元,安全吗? 马累旅游注意事项 马尔代夫旅游攻略注意事项 马尔代夫注意事项 去马尔代夫旅游注意事项 无极调光 什么意 如何请朋友在淘宝上帮忙付款? 在淘宝上怎么用支付宝付款? 把1到9填在9个方格里使横竖斜行都等于15 中间竖填5 有几种排法_百度知... 手机碎屏怎么修复?碎屏换个屏幕需要多少钱? 在芜湖方特东方神画旅行的目的地该如何选择? 1一12月份的英文缩写是什么啊? 三个n是什么车标 微信有哪些国家使用 霸气超拽高冷微信名怎么取霸气超拽高冷微信名 微信名霸气超拽高冷 霸气女生微信名 苹果手表蜂窝版和gps版有什么区别 港版iPhone6spuls指纹解锁怎么谁都能解开?求解答 我的IE浏览器一直提示应用程序错误,如下图,怎么修复? 猫耳朵里一粒一粒白色虫卵 抓蝎子最多灯泡有多少个 油溶染料有哪些 长虹酷开电视投屏设置方法 停车场app哪个好 之前的手机下载的云备份后面的手机不下载也可以备份上吗 PPE平台首款量产车型 Q6L e-tron满足用户所需 上汽奥迪Q6:穿透豪华表象,解构豪华内核 奔腾b70DVD导航仪奔腾b70导航仪的参数 奥迪q6什么时候国产 离婚时,对知识产权产生的收益如何分割? 企业会查员工学历吗? 去刘公岛游玩,怎样才能更尽兴?