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

数据库的并发操作可能带来哪些问题 丢失更新 死锁 违反唯一性约束

发布网友 发布时间:2022-05-01 05:32

我来回答

1个回答

热心网友 时间:2022-05-02 20:50

数据库中常见的并发操作所带来的一致性问题包括:丢失的修改、不可重复读、读脏数据、幻影读(幻影读在一些资料中往往与不可重复读归为一类)。
丢失修改
下面先来看一个例子,说明并发操作带来的数据的不一致性问题。
考虑飞机订票系统中的一个活动序列:
甲售票点(甲事务)读出某航班的机票余额A,设A=16.
乙售票点(乙事务)读出同一航班的机票余额A,也为16.
甲售票点卖出一张机票,修改余额A←A-1.所以A为15,把A写回数据库.
乙售票点也卖出一张机票,修改余额A←A-1.所以A为15,把A写回数据库.
结果明明卖出两张机票,数据库中机票余额只减少1。
归纳起来就是:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。前文(2.1.4数据删除与更新)中提到的问题及解决办法往往是针对此类并发问题的。但仍然有几类问题通过上面的方法解决不了,那就是:
不可重复读
不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。具体地讲,不可重复读包括三种情况:
事务T1读取某一数据后,事务T2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。例如,T1读取B=100进行运算,T2读取同一数据B,对其进行修改后将B=200写回数据库。T1为了对读取值校对重读B,B已为200,与第一次读取值不一致。
事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神密地消失了。
事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。(这也叫做幻影读)
读"脏"数据
读"脏"数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤消,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。
产生上述三类数据不一致性的主要原因是并发操作破坏了事务的隔离性。并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其它事务的干扰,从而避免造成数据的不一致性。
并发一致性问题的解决办法
封锁(Locking)
封锁是实现并发控制的一个非常重要的技术。所谓封锁就是事务T在对某个数据对象例如表追答Serializable隔离级别是最高的事务隔离级别,在此隔离级别下,不会出现读脏数据、不可重复读和幻影读的问题。在详细说明为什么之前首先让我们看看什么是幻影读。
所谓幻影读是指:事务1按一定条件从数据库中读取某些数据记录后,事务2插入了一些符合事务1检索条件的新记录,当事务1再次按相同条件读取数据时,发现多了一些记录。
repeatable read
1:所有的select在第一次一致读以后在事务中都会使用一样的数据状态快照。
2:update,delete都会使用间隙锁来保证数据的安全。防止phantom。
3:这是采用最广的事务隔离级别,也是mysql默认的事务隔离级别。
read commited
1:每一个select都会使用各自的数据状态的快照。
2:如果当前的数据状态已更新到最新,但是当单个select的时候仍然会产生不一致的数据状态。
3:更少的间隙锁意味着更少的死锁。
4:唯一key的检查在第二索引和其它外键检查的时候也会产生间隙所。(gap必须被锁定以防止在parent row被删除后仍在child row中插入相关数据)。
5:这种隔离级别也是使用的非常普遍的隔离级别尤其是在5.1以后的版本中。
6:征对在5.0更早的版本中,可以通过innodb_locks_unsafe_for_binlog移除gap locking。
(In V5.1, most gap-locking is removed w/ this level, but you MUST use row-based logging/replication。)
read uncommitted
1:这种隔离级别几乎不被使用,在select将会看到各种奇怪的数据现象,当然包括其它事务还未提交的数据。
2:强烈不推
荐,不能保证数据的一致性。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
莲花冬天发芽好吗 过冬荷花什么时候发芽 一个手机号怎样登陆两个孩子的长沙市中小学生人人通云平台 人人通怎么进入学校 人人通电脑版学生怎样登录 名侦探柯南真人版3为什么要换人? 真人版柯南,你最喜欢小栗旬还是沟端淳平? 央企中国稀土集团落户江西,衷心希望江西摆脱“环江西经济带”地位_百度... 来天津的央企有哪些 东丽区的央企有哪些 迪丽热巴和黄景瑜用同个保镖,难道他们是情侣? 热巴黄景瑜共用保镖!这是恋情曝光还是工作需要? 热巴黄景瑜被扒共用一个保镖,你觉得他们两个会走到一起吗? 迪丽热巴黄景瑜同用一个保镖,是巧合还是在一起了? 共用保镖,前同事盖章:去年就定情了!迪丽热巴黄景瑜,谁在炒? 迪丽热巴黄景瑜同用一个保镖,他们之间的关系有多好? 什么是小寒节气? 迪丽热巴、黄景瑜同用一个保镖,他们这是在一起了吗? 用脆弱,懦弱,持之以恒,凝聚,光芒万丈,孤军奋战写一段以努力为主题的话,运用一种修辞手法 什么是小寒节气来历? 迪丽热巴、黄景瑜同用一个保镖,他们合作过吗? 小寒节气的含义是什么? 鲁抗医药股票建议合理定价区间是多少 迪丽热巴黄景瑜同用一个保镖,他俩到底什么关系? 2015年12月31日鲁抗医药股票市值 迪丽热巴黄景瑜被扒共用一个保镖,关于他俩的恋情还有哪些地方暴露端倪的? 索尼(SONY) WH-1000XM4专属APP 其他手机能用吗? Sony手机自带的音乐APP怎么删除播放列表 四海皆学子上一句 谁知道桃李满天下的上一句 网曝黄景瑜探班迪丽热巴,这是恋情实锤了吗? 并发操作会带来哪些数据不一致性 黄景瑜热巴电视剧叫什么? 并发操作会带来哪些数据不一致性.a,丢失修改,不可重复读,读脏数据... 如何保持数据库的并发性和一致性 大家介绍一下有什么伤感铃声给我当来电铃声么? 试述并发操作隐含的数据不一致性问题 求助各位网络歌手达人,帮我参谋下! 圣牧有机纯牛奶多少钱 天猫双十一是怎么保证高并发、分布式系统中,数据一致性的? 求好听的伤感手机铃声。 有没有好听的来电铃声,要悲伤一点的 天猫双十一是怎么保证高并发,分布式系统中,数据一致性的 谁能介绍几首伤感的来电铃声给我啊、谢谢 少女都市怎么买垃圾桶 谁有2010最新伤感来电铃声?多推荐几条啊。 悲伤的手机来电铃声 t1,t2并发执行能保证数据库的一致性吗,t1,t2并发执行会出现死锁吗 phpstudy自带mysql吗 求好听的伤感来电铃声,我是90后的!