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

事务锁与并发问题是什么关系,第1张

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

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

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

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

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

ACID,指数据库事务正确执行的四个基本要素的缩写包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库系统,必需要具有这四种特性,否则在事务过程(Transactionprocessing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求

原子性

整个事务中的所有 *** 作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性

在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

隔离性

两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。

持久性

在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

《数据库事务处理的艺术》(李海翔)电子书网盘下载免费在线阅读

链接:>提取码:1234

书名:数据库事务处理的艺术

作者:李海翔

豆瓣评分:54

出版社:机械工业出版社

出版年份:2017-10-1

事务的:原子性、一致性、分离性、持久性原子性、一致性、分离性、持久性(1)原子性事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改 *** 作要么全部执行,要么完全不执行

这种特性称为原子性

事务的原子性要求,如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行

就是说事务的 *** 纵序列或者完全应用到数据库或者完全不影响数据库

这种特性称为原子性

假如用户在一个事务内完成了对数据库的更新,这时所有的更新对外部世界必须是可见的,或者完全没有更新

前者称事务已提交,后者称事务撤消(或流产)

DBMS必须确保由成功提交的事务完成的所有 *** 纵在数据库内有完全的反映,而失败的事务对数据库完全没有影响

(2)一致性事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态

这种特性称为事务的一致性

假如数据库的状态满足所有的完整性约束,就说该数据库是一致的

一致性处理数据库中对所有语义约束的保护

假如数据库的状态满足所有的完整性约束,就说该数据库是一致的

例如,当数据库处于一致性状态S1时,对数据库执行一个事务,在事务执行期间假定数据库的状态是不一致的,当事务执行结束时,数据库处在一致性状态S2

(3)分离性分离性指并发的事务是相互隔离的

即一个事务内部的 *** 作及正在 *** 作的数据必须封锁起来,不被其它企图进行修改的事务看到

分离性是DBMS针对并发事务间的冲突提供的安全保证

DBMS可以通过加锁在并发执行的事务间提供不同级别的分离

假如并发交叉执行的事务没有任何控制, *** 纵相同的共享对象的多个并发事务的执行可能引起异常情况

DBMS可以在并发执行的事务间提供不同级别的分离

分离的级别和并发事务的吞吐量之间存在反比关系

较多事务的可分离性可能会带来较高的冲突和较多的事务流产

流产的事务要消耗资源,这些资源必须要重新被访问

因此,确保高分离级别的DBMS需要更多的开销

(4)持久性持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失

即一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,耐得住任何系统故障

持久性通过数据库备份和恢复来保证

持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失

即对已提交事务的更新能恢复

一旦一个事务被提交,DBMS必须保证提供适当的冗余,使其耐得住系统的故障

以上就是关于事务锁与并发问题是什么关系全部的内容,包括:事务锁与并发问题是什么关系、数据库事务级别、《数据库事务处理的艺术事务管理与并发控制》epub下载在线阅读,求百度网盘云资源等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9735863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存