CN116303785A - 一种分布式事务死锁检测解锁方法、装置及存储介质 - Google Patents
一种分布式事务死锁检测解锁方法、装置及存储介质 Download PDFInfo
- Publication number
- CN116303785A CN116303785A CN202310263741.8A CN202310263741A CN116303785A CN 116303785 A CN116303785 A CN 116303785A CN 202310263741 A CN202310263741 A CN 202310263741A CN 116303785 A CN116303785 A CN 116303785A
- Authority
- CN
- China
- Prior art keywords
- transaction
- deadlock
- node
- lock
- unlocking
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 74
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000003860 storage Methods 0.000 title claims abstract description 11
- 230000000903 blocking effect Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 9
- 230000004048 modification Effects 0.000 claims description 7
- 238000012986 modification Methods 0.000 claims description 7
- 238000012423 maintenance Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 101150081767 TXN2 gene Proteins 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 101150061874 TXN gene Proteins 0.000 description 1
- 239000002253 acid Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式事务死锁检测解锁方法、装置及存储介质,涉及分布式事务领域。该分布式事务死锁检测解锁方法,每隔一秒运行一次死锁检测服务;向各个数据库节点localTxnLocks模块,请求获取当前锁等待信息;向各个数据库节点localTnxManager模块,请求获取当前活跃事务;构建全局的事务等待关系,通过深度优先搜索找出事务死锁环路;基于事务开销找出代价最小的事务,基于事务ID找到代价最小的事务所在的数据库节点,向数据库节点发送请求终止当前SQL执行,节点收到请求后,终止SQL、回滚事务,释放锁资源。解决了现有技术中节点之间调用过多、检测效率低、解锁没有评估事务代价的问题。
Description
技术领域
本发明涉及分布式事务领域,尤其涉及一种分布式事务死锁检测解锁方法、装置及存储介质。
背景技术
为了实现数据库的ACID相关事务特性,对于并发更改的数据加锁是一种通用的解决方法,对于先执行的更改,通过对数据加锁来阻止后来事务的更改,后来的事务读取到要更改的数据上有锁后,会进行锁的等待。当加锁的事务提交或者回滚之后,会清理更改数据上的锁信息,同时唤醒等待锁的其他事务。等待锁的事务,然后顺利获得数据上的锁,执行更改,并行的事务实现对竞争数据的串行更新。这种加锁的方式同时带来了事务间一种常见的锁等待问题,死锁问题,死锁处理方式比较常见的是锁超时机制,当等待锁超过一定时间但是仍然没有成功获得锁之后,事务进行回滚。
这种锁超时机制,实际上是一种被动的处理方式,因为它的代价是死锁的事务要进行长时间的死锁等待后才能被回滚。现有方案普遍存在节点之间因为锁等待需要检测死锁存在时过多的节点间调用问题,在分布式系统中,节点间的相互访问,增加了系统处理的压力,增加了处理的开销。对于解锁方案,也没有提出高效的方法,随意选择一个死锁的事务进行回滚,有可能为了一个小事务顺利提交,回滚了一个超大事务,没有考虑到事务的开销,回滚的代价等。
发明内容
本申请实施例通过提供一种分布式事务死锁检测解锁方法、装置及存储介质,解决了现有技术中节点之间调用过多、检测效率低、解锁没有评估事务代价的问题,实现了高效快速的检测、解锁死锁。
本申请实施例提供了一种分布式事务死锁检测解锁方法,包括以下步骤:
S1、节点竞选为deadLockDetector后,开启独立线程做死锁检测;
S2、每隔一秒运行一次死锁检测、解锁服务;
S3、向各个数据库节点localTxnLocks模块,请求获取当前锁等待信息、处于锁等待状态的事务ID;
S4、向各个数据库节点localTnxManager模块,请求获取当前活跃事务;
S5、构建全局的事务等待关系,通过深度优先搜索找出事务死锁环路;
S6、在死锁环路中基于事务开销找出代价最小的事务,基于事务ID找到代价最小的事务所在的数据库节点,向数据库节点发送请求终止当前SQL执行,节点收到请求后,终止SQL、回滚事务,释放锁资源。
进一步地,所述S1具体包括以下步骤:
S11、所有数据库节点开启deadLockDetector即死锁检测;
S12、通过竞选成为死锁检测的协调者,开启独立的线程处理死锁检测任务。
进一步地,所述S3具体包括以下步骤:
S31、deadLockDetector向各个数据库节点发送请求,收集当前节点的锁等待信息,节点收到请求后,从localTxnLocks维护的锁等待信息中过滤等待时间超过1s的信息;
S32、节点传回过滤好的锁等待信息,deadLockDetector得到处于锁等待状态的事务ID。
进一步地,所述S31中localTxnLocks维护的锁等待信息包括:处于锁等待状态的事务ID、等待的数据资源、数据资源上的锁信息、开始等待的时间。
进一步地,所述S4具体包括以下步骤:
deadLockDetector向各个数据库节点发送请求,收集当前节点的活跃事务,节点收到请求后,localTnxManager提供活跃事务信息,提供当前处于等待锁和阻塞状态的事务信息。
进一步地,所述localTnxManager提供活跃事务信息包括:事务执行时间、事务维护数据行数、事务修改数据行数、事务执行的SQL语句数、事务是否处于锁等待状态。
进一步地,所述S5具体包括以下步骤:
S51、收集完所有节点的锁等待信息后,基于事务间的锁等待关系构建有向图;
S52、通过深度优先搜索检测有向图是否存在环路,存在环路则出现事务死锁。
进一步地,所述S6具体包括以下步骤:
S61、基于事务维护数据行数、修改数据行数、执行的SQL语句数,比较死锁环路上事务的开销,选择代价最小的事务;
S62、从收集到的所有事务ID中,找到代价最小的事务所在的数据库节点;
S63、向数据库节点发送请求回滚当前事务,请求的原因为死锁回滚;
S64、节点收到请求后,终止处于阻塞状态的SQL,回滚整个事务,死锁解锁成功。
一种分布式事务死锁检测解锁装置,包括竞选协调者模块、死锁检测模块、第一获取模块、第二获取模块、环路检测模块、死锁解锁模块,其中:
竞选协调者模块,用于节点竞选为deadLockDetector后,开启独立线程做死锁检测;
死锁检测模块,用于每隔一秒运行一次死锁检测、解锁服务;
第一获取模块,用于向各个数据库节点localTxnLocks,请求获取当前锁等待信息、处于锁等待状态的事务ID;
第二获取模块,用于向各个数据库节点localTnxManager,请求获取当前活跃事务;
环路检测模块,用于构建全局的事务等待关系,通过深度优先搜索找出事务死锁环路;
死锁解锁模块,用于在死锁环路中基于事务开销找出代价最小的事务,基于事务ID找到代价最小的事务所在的数据库节点,向数据库节点发送请求终止当前SQL执行,节点收到请求后,终止SQL、回滚事务,释放锁资源。
一种计算机可读存储介质,用于存储程序,所述程序被处理器执行时实现任一项所述的分布式事务死锁检测解锁方法。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
基于事务间锁等待关系构建全局事务等待关系,从全局的视角进行死锁检测,检测过程中不再需要节点间调用,节省了节点资源开销,减少了节点间系统调用;
通过选举产生死锁检测协调者,每个节点都可以充当检测协调者角色,协调者只在检测时收集信息,属于无状态模块,具有高可用性,检测协调者向各个节点收集活跃事务信息、事务锁信息,属于批量收集,死锁检测相关的节点间调用极少;
收集锁等待信息时,只收集等待超过一定时间的事务锁等待信息,减少了信息的传输,同时简化了检测数据的大小;
基于事务的开销,选择代价较小的事务进行回滚来解锁,降低了系统资源的浪费。
附图说明
图1为本发明分布式事务死锁检测解锁方法流程图;
图2为本发明分布式数据库事务死锁检测、解锁流程实例图;
图3为本发明分布式数据库死锁检测架构图。
具体实施方式
本发明提出一种分布式数据库死锁检测、解锁的方案,协调者周期性的收集各个节点的锁等待信息、事务信息,进行全局的死锁检测;在收集信息时通过过滤减少信息的同步;在检测到死锁存在时,基于事务执行的代价,解锁时回退代价更小的事务。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
一种分布式事务死锁检测解锁方法,包括以下步骤:
S1、节点竞选为deadLockDetector后,开启独立线程做死锁检测;
S2、每隔一秒运行一次死锁检测、解锁服务;
S3、向各个数据库节点localTxnLocks模块,请求获取当前锁等待信息、处于锁等待状态的事务ID;
S4、向各个数据库节点localTnxManager模块,请求获取当前活跃事务;
S5、构建全局的事务等待关系,通过深度优先搜索找出事务死锁环路;
S6、在死锁环路中基于事务开销找出代价最小的事务,基于事务ID找到代价最小的事务所在的数据库节点,向数据库节点发送请求终止当前SQL执行,节点收到请求后,终止SQL、回滚事务,释放锁资源。
在本实施例中,如图1所示,竞选为死锁检测的协调者后,开启独立线程处理死锁检测任务,每隔一秒运行一次死锁检测服务,向各个数据库节点发送请求,收集当前节点的锁等待信息,节点收到请求后,传回等待时间超过一秒的信息,向各个节点发送请求,收集当前节点的活跃事务,节点收到请求后,返回处于等待锁状态的事务,收集到所有的锁等待信息后,构建有向图,通过深度优先搜索检测有向图是否有环路,若存在环路,比较环路上事务开销,选择代价较小的事务回滚,基于事务ID,找到回滚事务所在节点,向节点发送请求回滚当前事务,节点收到请求后,终止正在执行的SQL,回滚整个事务,释放锁资源。
S1具体包括以下步骤:
S11、所有数据库节点开启deadLockDetector即死锁检测;
S12、通过竞选成为死锁检测的协调者,开启独立的线程处理死锁检测任务。
在本实施例中,deadLockDetector为死锁检测模块,位于一个数据库节点上,在分布式数据库集群中,节点间通过选举产生死锁检测协调者,竞选为协调者后,开启独立线程每隔一秒进行一次死锁检测。
S3具体包括以下步骤:
S31、deadLockDetector向各个数据库节点发送请求,收集当前节点的锁等待信息,节点收到请求后,从localTxnLocks维护的锁等待信息中过滤等待时间超过1s的信息;
S32、节点传回过滤好的锁等待信息,deadLockDetector得到处于锁等待状态的事务ID。
在本实施例中,如图2所示,deadLockDetector向每个数据库节点发送请求,收集当前节点上的锁等待信息,收集处于锁等待状态的事务ID,节点收到请求后,从localTxnLocks维护的锁等待信息中,过滤等待时间超过一秒的信息,通过压缩传给死锁检测协调者,过滤的目的是为了减少锁信息传输,同时也减少死锁检测的压力。
S31中localTxnLocks维护的锁等待信息包括:处于锁等待状态的事务ID、等待的数据资源、数据资源上的锁信息、开始等待的时间。
在本实施例中,数据存在数据库节点上,事务给数据加锁时需要访问节点,由数据库节点来维护事务锁等待信息,localTxnLocks记录了每个数据库节点在本地维护当前节点上事务锁等待信息,例如Txn1等待Txn2在数据rowKey上的资源,那么维护Txn1—>{Txn2,rowKey,lockInfo,ts},记录了事务ID为Txn1等待的事务ID为Txn2上的锁信息以及开始等待的时间ts。
S4具体包括以下步骤:
deadLockDetector向各个数据库节点发送请求,收集当前节点的活跃事务,节点收到请求后,localTnxManager提供活跃事务信息,提供当前处于等待锁和阻塞状态的事务信息。
在本实施例中,如图3所示,deadLockDetector收集到了每个数据节点的锁等待信息,收集的锁等待信息只有事务ID,没有具体的事务信息,deadLockDetector向每个数据库节点发送请求,收集当前节点上的活跃事务,节点收到请求后,localTnxManager提供活跃事务信息,只需要提供当前事务处于等待锁状态和处于阻塞状态的事务。当事务处于等待锁状态和处于阻塞状态时,可能出现死锁,这样可以减少不必要的信息传输,减少信息传输的压力。
localTnxManager提供活跃事务信息包括:事务执行时间、事务维护数据行数、事务修改数据行数、事务执行的SQL语句数、事务是否处于锁等待状态。
在本实施例中,每个数据库节点都可以连接客户端,客户端发起的执行事务由节点维护,localTnxManager记录了客户端连接到本节点执行的事务,包括执行事务连接ID、执行时间、修改数据行数、执行的SQL语句数、是否处于锁等待中状态等等;维护修改数据行数、执行的SQL语句数以及其他代价相关的信息,可用于评估事务的代价,用于后续选择代价更小的事务进行回滚。
S5具体包括以下步骤:
S51、收集完所有节点的锁等待信息后,基于事务间的锁等待关系构建有向图;
S52、通过深度优先搜索检测有向图是否存在环路,存在环路则出现事务死锁。
在本实施例中,deadLockDetector从localTxnLocks收集到所有节点处于锁等待状态的事务ID后,基于事务ID构建有向图,由深度优先搜索检测有向图是否有环路存在,如果存在环路则说明出现了事务死锁。
S6具体包括以下步骤:
S61、基于事务维护数据行数、修改数据行数、执行的SQL语句数,比较死锁环路上事务的开销,选择代价最小的事务;
S62、从收集到的所有事务ID中,找到代价最小的事务所在的数据库节点;
S63、向数据库节点发送请求回滚当前事务,请求的原因为死锁回滚;
S64、节点收到请求后,终止处于阻塞状态的SQL,回滚整个事务,死锁解锁成功。
在本实施例中,如图2所示,检测到环路存在死锁时,根据localTnxManager提供的活跃事务信息,事务维护数据行数、修改数据行数、执行的SQL语句数进行代价估算,比较环路上事务的开销,选择代价较小的事务作为回滚的事务,基于事务ID,找到回滚事务所在的数据节点,向节点发送请求回滚当前事务,请求的原因为死锁回滚,节点收到回滚事务的请求,终止正在执行同时处于阻塞状态的SQL,返回错误码死锁回滚,同时回滚整个事务,事务回滚后,死锁环路被打破,被阻塞的事务成功执行,成功解锁死锁。
一种分布式事务死锁检测解锁装置,包括竞选协调者模块、死锁检测模块、第一获取模块、第二获取模块、环路检测模块、死锁解锁模块,其中:
竞选协调者模块,用于节点竞选为deadLockDetector后,开启独立线程做死锁检测;
死锁检测模块,用于每隔一秒运行一次死锁检测、解锁服务;
第一获取模块,用于向各个数据库节点localTxnLocks,请求获取当前锁等待信息、处于锁等待状态的事务ID;
第二获取模块,用于向各个数据库节点localTnxManager,请求获取当前活跃事务;
环路检测模块,用于构建全局的事务等待关系,通过深度优先搜索找出事务死锁环路;
死锁解锁模块,用于在死锁环路中基于事务开销找出代价最小的事务,基于事务ID找到代价最小的事务所在的数据库节点,向数据库节点发送请求终止当前SQL执行,节点收到请求后,终止SQL、回滚事务,释放锁资源。
一种计算机可读存储介质,用于存储程序,所述程序被处理器执行时实现任一项所述的分布式事务死锁检测解锁方法。
在本实施例中,节点竞选为死锁检测协调者后,协调者周期性的收集各个节点的锁等待信息、活跃事务信息,构建全局事务间锁等待关系,进行死锁检测,检测到死锁后,基于事务代价选择代价较小的事务进行回滚,解锁事务死锁。
上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:
本发明采用集中式处理,在构建的全局关系中,根据事务的锁等待关系作为有向图,通过深度优先搜索,就可以把死锁关系检测出来,检测方法高效,相对于每个锁等待,执行一次检测,极大的节省了计算资源;通过构建全局的事务、锁等待关系,从全局的视角进行死锁检测,检测过程中不再需要节点间调用查询,节省了节点资源开销,极大的减少了节点间的系统调用。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种分布式事务死锁检测解锁方法,其特征在于,包括以下步骤:
S1、节点竞选为deadLockDetector后,开启独立线程做死锁检测;
S2、每隔一秒运行一次死锁检测、解锁服务;
S3、向各个数据库节点localTxnLocks模块,请求获取当前锁等待信息、处于锁等待状态的事务ID;
S4、向各个数据库节点localTnxManager模块,请求获取当前活跃事务;
S5、构建全局的事务等待关系,通过深度优先搜索找出事务死锁环路;
S6、在死锁环路中基于事务开销找出代价最小的事务,基于事务ID找到代价最小的事务所在的数据库节点,向数据库节点发送请求终止当前SQL执行,节点收到请求后,终止SQL、回滚事务,释放锁资源。
2.如权利要求1所述的一种分布式事务死锁检测解锁方法,其特征在于,所述S1具体包括以下步骤:
S11、所有数据库节点开启deadLockDetector即死锁检测;
S12、通过竞选成为死锁检测的协调者,开启独立的线程处理死锁检测任务。
3.如权利要求1所述的一种分布式事务死锁检测解锁方法,其特征在于,所述S3具体包括以下步骤:
S31、deadLockDetector向各个数据库节点发送请求,收集当前节点的锁等待信息,节点收到请求后,从localTxnLocks维护的锁等待信息中过滤等待时间超过1s的信息;
S32、节点传回过滤好的锁等待信息,deadLockDetector得到处于锁等待状态的事务ID。
4.如权利要求3所述的一种分布式事务死锁检测解锁方法,其特征在于,所述S31中localTxnLocks维护的锁等待信息包括:处于锁等待状态的事务ID、等待的数据资源、数据资源上的锁信息、开始等待的时间。
5.如权利要求1所述的一种分布式事务死锁检测解锁方法,其特征在于,所述S4具体包括以下步骤:
deadLockDetector向各个数据库节点发送请求,收集当前节点的活跃事务,节点收到请求后,localTnxManager提供活跃事务信息,提供当前处于等待锁和阻塞状态的事务信息。
6.如权利要求5所述的一种分布式事务死锁检测解锁方法,其特征在于,所述localTnxManager提供活跃事务信息包括:事务执行时间、事务维护数据行数、事务修改数据行数、事务执行的SQL语句数、事务是否处于锁等待状态。
7.如权利要求1所述的一种分布式事务死锁检测解锁方法,其特征在于,所述S5具体包括以下步骤:
S51、收集完所有节点的锁等待信息后,基于事务间的锁等待关系构建有向图;
S52、通过深度优先搜索检测有向图是否存在环路,存在环路则出现事务死锁。
8.如权利要求1所述的一种分布式事务死锁检测解锁方法,其特征在于,所述S6具体包括以下步骤:
S61、基于事务维护数据行数、修改数据行数、执行的SQL语句数,比较死锁环路上事务的开销,选择代价最小的事务;
S62、从收集到的所有事务ID中,找到代价最小的事务所在的数据库节点;
S63、向数据库节点发送请求回滚当前事务,请求的原因为死锁回滚;
S64、节点收到请求后,终止处于阻塞状态的SQL,回滚整个事务,死锁解锁成功。
9.一种分布式事务死锁检测解锁装置,其特征在于,包括竞选协调者模块、死锁检测模块、第一获取模块、第二获取模块、环路检测模块、死锁解锁模块,其中:
竞选协调者模块,用于节点竞选为deadLockDetector后,开启独立线程做死锁检测;
死锁检测模块,用于每隔一秒运行一次死锁检测、解锁服务;
第一获取模块,用于向各个数据库节点localTxnLocks,请求获取当前锁等待信息、处于锁等待状态的事务ID;
第二获取模块,用于向各个数据库节点localTnxManager,请求获取当前活跃事务;
环路检测模块,用于构建全局的事务等待关系,通过深度优先搜索找出事务死锁环路;
死锁解锁模块,用于在死锁环路中基于事务开销找出代价最小的事务,基于事务ID找到代价最小的事务所在的数据库节点,向数据库节点发送请求终止当前SQL执行,节点收到请求后,终止SQL、回滚事务,释放锁资源。
10.一种计算机可读存储介质,用于存储程序,其特征在于,所述程序被处理器执行时实现权利要求1至8中任一项所述的分布式事务死锁检测解锁方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310263741.8A CN116303785A (zh) | 2023-03-13 | 2023-03-13 | 一种分布式事务死锁检测解锁方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310263741.8A CN116303785A (zh) | 2023-03-13 | 2023-03-13 | 一种分布式事务死锁检测解锁方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116303785A true CN116303785A (zh) | 2023-06-23 |
Family
ID=86821964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310263741.8A Pending CN116303785A (zh) | 2023-03-13 | 2023-03-13 | 一种分布式事务死锁检测解锁方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116303785A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076147A (zh) * | 2023-10-13 | 2023-11-17 | 支付宝(杭州)信息技术有限公司 | 死锁检测方法、装置、设备和存储介质 |
CN117827777A (zh) * | 2024-01-02 | 2024-04-05 | 星环信息科技(上海)股份有限公司 | 一种分布式数据库死锁处理方法、装置、设备及存储介质 |
-
2023
- 2023-03-13 CN CN202310263741.8A patent/CN116303785A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076147A (zh) * | 2023-10-13 | 2023-11-17 | 支付宝(杭州)信息技术有限公司 | 死锁检测方法、装置、设备和存储介质 |
CN117076147B (zh) * | 2023-10-13 | 2024-04-16 | 支付宝(杭州)信息技术有限公司 | 死锁检测方法、装置、设备和存储介质 |
CN117827777A (zh) * | 2024-01-02 | 2024-04-05 | 星环信息科技(上海)股份有限公司 | 一种分布式数据库死锁处理方法、装置、设备及存储介质 |
CN117827777B (zh) * | 2024-01-02 | 2024-06-18 | 星环信息科技(上海)股份有限公司 | 一种分布式数据库死锁处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116303785A (zh) | 一种分布式事务死锁检测解锁方法、装置及存储介质 | |
EP3278239B1 (en) | Processing database transactions in a distributed computing system | |
CA2991128C (en) | Method and architecture for providing database access control in a network with a distributed database system | |
CN102354289B (zh) | 一种并发事务的调度方法和相关装置 | |
CN101253483B (zh) | 管理资源锁的方法和系统 | |
US20090300017A1 (en) | Transaction Parallel Control Method, and Database Managemet System | |
US20060206901A1 (en) | Method and system for deadlock detection in a distributed environment | |
Chrysanthis et al. | Recovery and performance of atomic commit processing in distributed database systems | |
CN111459963B (zh) | 核心账务交易并发处理方法及装置 | |
US7185339B2 (en) | Victim selection for deadlock detection | |
CN101350022A (zh) | 基于数据库逻辑锁的变更处理方法 | |
CN103678122A (zh) | 一种死锁检测方法、设备及系统 | |
JP2003536118A (ja) | マルチスレッドコンピュータシステムにおけるモニタ変換 | |
CN110532069B (zh) | 一种分布式事务提交方法及装置 | |
CN1266602C (zh) | 用于锁定表目的方法和设备及用于并行处理的计算机系统 | |
CN112612834B (zh) | 数据库中间件及其实现客户端与服务器连接的方法 | |
Buckley et al. | Obtaining Progressive Protocols for a Simple Multiversion Database Model. | |
CN117667869B (zh) | 一种全局事务并发控制方法、装置及设备 | |
CN114579669B (zh) | 基于探测消息传递的分布式数据库事务死锁检测解锁方法 | |
CN113448710B (zh) | 基于业务资源的分布式应用系统 | |
Abdouli et al. | A system supporting nested transactions in DRTDBSs | |
CN117707798A (zh) | 多线程并发状态下的死锁消除方法、装置、设备及介质 | |
CN116069477A (zh) | 一种批量作业处理方法及装置 | |
Uchida et al. | CLMD: Making Lock Manager Predictable and Concurrent for Deterministic Concurrency Control | |
CN115185957A (zh) | 一种轻量级实时内存数据库事务并发控制方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |