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

事务锁与并发问题是什么关系?

发布网友 发布时间:2022-04-26 05:34

我来回答

1个回答

热心网友 时间:2022-04-07 17:29

事务锁是为了应对并发问题的一种解决机制,在事务获取数据块当前状态的依赖关系(如通过读取或修改数据)之前,它必须保护自己不受其他事务对同一数据进行修改的影响,事务通过请求锁定数据块来达到此目的。

1.锁模式如果某个事务已获得特定数据的锁,则其他事务不能获得与该锁模式发生冲突的锁。如果事务请求的锁模式与已授予同一数据的锁发生冲突,则数据库引擎实例将暂停事务请求直到第一个锁被释放。锁有多种模式,包括共享锁、更新锁、排他锁等。

(1)共享锁(S锁)共享锁允许并发事务在封闭式并发事务下读取资源。有关详细信息,请参阅“2.1.3并发事务”的类型。资源上存在共享锁时,任何其他事务都不能修改数据。读取操作一完成,就立即释放资源上的共享锁,除非将事务隔离级别设置为可重复读或更高级别,或者在事务持续时间内用锁定提示保留共享锁。

2)更新锁(U锁)更新锁是共享锁和排他锁的混合型锁,更新锁意味着在做一个更新时,一个共享锁在扫描完成符合条件的数据后可能会转化成排他锁。这里面有两个步骤:((1)扫描获取Where条件时,这部分是一个更新查询,此时是一个更新锁。

(2)如果将执行写入更新,此时该锁升级到排他锁;否则,该锁转变成共享锁。

3)排他锁(X锁)排他锁可以防止并发事务对资源进行访问,不与其他任何锁兼容。使用排他锁时,任何其他事务都无法修改数据;仅在未提交读隔离级别时才会被其他事务读取占有的数据资源。

2.死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者彼此通信而造成的一种阻塞的现象,若无外力作用,它们将无法推进下去,此时称系统处于死锁状态或系统产生了死锁。这些永远在互相等待的进程称为死锁进程。下面从死锁产生的原因、条件及预防措施等方面来研究事务的死锁。

(1)死锁产生的原因当两个或多个进程各自具有某个资源的锁定,但其他进程尝试要锁定此资源,而造成进程永久封锁彼此时,会发生死锁。例如,事务A取得数据列1的排他锁定,事务B取得数据列2的排他锁定,事务A现在要求取得数据列2的独占锁定,事务B现在要求取得数据列1的独占锁定。事务A与事务B均需要独占数据列1与数据列2的资源,但两个资源分别被两个事务各占一个,互相等待对方的占据的资源才能完成本身的事务,就会造成事务间进程的死锁。

2)死锁产生的条件虽然进程在运行过程中可能发生死锁,但死锁的发生也必须具备一定的条件。死锁的发生必须具备以下四个必要条件。

((1)互斥条件。互斥条件指进程对所分配到的资源进行排他性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其他进程请求资源,则请求者只能等待,直至占有资源的进程用完释放。

(2)请求和保持条件。请求和保持条件指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程阻塞,但又对自己已获得的其他资源保持不放。

(3)不剥夺条件。不剥夺条件指进程已获得的资源在未使用完之前不能被剥夺,只能在使用完时由自己释放。

(4)环路等待条件。环路等待条件指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,…,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源;…;Pn正在等待已被P0占用的资源。死锁的预防措施理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。只要打破四个必要条件之一就能有效预防死锁的发生。

((1)打破互斥条件。改造独占性资源为虚拟资源,但大部分资源已无法改造。

(2)打破不可抢占条件。当一进程占有一独占性资源后又去申请另一独占性资源而无法满足时,则退出原占有的资源。

(3)打破占有且申请条件。采用资源预先分配策略,即进程运行前申请全部资源,满足则运行,不满足就等待,这样就不会出现占有部分资源后再去申请其他资源的场景。

(4)打破循环等待条件。实现资源有序分配策略,对所有设备实现分类编号,所有进程只能采用按序号递增的形式申请资源。

所以,在系统设计、进程调度等方面要注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源,在系统运行过程中,对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,若分配后系统可能发生死锁,则不予分配;否则予以分配。因此,对资源的分配要给予合理的规划。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
昭君怨诗词大全(5首昭君怨古词) 道是春来花未,道是雪来香异。竹外一枝斜,野人家。词中吟诵的是 萌萌带着自己的压岁钱去买笔记本,买了2本后还剩1.8元。如果买同样的笔记... ...1.8元,买同样的作业本四本差2.4元,作业本多少钱一本。给算得方法说... ...如果买同样的硬面钞4本则差2.40元,那么小明带了多少钱? 小明带一些钱去买作业本,买两本之后还剩1.8元;如果买同样的练习本4本则... 我的QQ总是被盗,烦死了,我总要改密码,怎样才不会被盗密码? 我跟一个好兄弟绝交了有1年9个月,没有联系没有来往,但我的心一直惦记... ...了。最近他听说我生病做手术回来了,就去班长那里问我的近况,加我... 请问神舟七号载人航天飞行的圆满成功,将对我国经济产生哪些积极影响... 史上霸气的五句话,你用过哪一句 oracle中的锁有什么作用?都有什么锁?之间有什么区别?谢谢 霸气短句五字 霸气的五字诗句 java事务和锁的问题,如果事务没提交,其他线程能修改数据库中的同条数 ... 高傲或者霸气的五字成语有哪些? 为什么说采用事务和锁机制可以解决数据库系统中的并发性问题_百度知 ... 有哪些霸气的五字成语? 有关SQL sever数据库中事务和锁的问题 霸气的五字成语 Oracle怎么显式开启事务,开始事务跟锁有什么关系,在存储过程中有时怎么... 霸气五字成语大全 MYSQL事务与锁表的问题? 开启事务lock锁还有效吗 关于数据库事务与加锁 mysql事务与锁的关系 中级会计师难不难考 事务和加锁 之间有什么关系 柴犬和秋田犬都没什么区别吗? 柴犬 秋田 区别 充满霸气的五字对联 最有霸气的五字诗句,要写六句,但每句最后一个字连起来是“兄弟同甘共苦” 什么是事务?什么是锁? 求霸气点的5个字的诗句 中国最霸气的五把神剑,为何第一把被禁止出国展览? mysql 事务 是 行锁还是表锁 流量计种类有哪些?详细分类说明 很有气势的五字词语有哪些 中国历史上最霸气的五句话 来个懂的解释一下,腾讯电脑管家的流量监测准确吗? 求 带霸气嚣张 的 五字成语或诗句 哎 随便了只有听起来叼就可以了 霸气的五字诗句网名 求五组组名,霸气点的,和口号,谢谢! 这张邮票的名称和价格是多少啊? 介绍蓝军邮票作文四年级作文 邮票盖邮戳就不值钱了吗?比如蓝军邮票盖了邮戳价格会是多少? 邮票最贵的是哪种类型 邮票价格(蓝军票) 有没有价值值几十万的邮票 蓝军邮票仿伪在什么位置