一种死锁处理方法及装置制造方法及图纸

技术编号:15690984 阅读:75 留言:0更新日期:2017-06-24 03:49
本发明专利技术公开了一种死锁处理方法及装置,该方法包括:监测数据库运行的进程是否发生死锁;当监测到发生死锁时,根据预设的模型重现死锁;根据重现的死锁确定死锁发生的过程以及避免死锁发生的语句。上述技术方案,由于在监控到数据库有死锁错误的时候,根据预设模型来进行死锁重现和分析,最终给出不会导致死锁的更新语句,从而极大提高了数据库死锁的分析效率和更快的给出了解决方案,给业务的稳定性带来了更好的帮助,提升了用户体验满意度。

Deadlock treatment method and device

The invention discloses a deadlock processing method and device. The method includes: monitoring database operation and whether the process of deadlock; deadlock occurs when monitoring, according to the preset model to reproduce the deadlock; deadlock is determined according to reconstruction process deadlock and avoid the deadlock statement. The technical scheme, because the monitoring to the database when the deadlock error, according to the preset model to reproduce and analyze the deadlock, finally does not lead to deadlock UPDATE statement, which greatly improves the efficiency of database deadlock and faster give solutions, bring better help to enhance the stability of the business. User experience satisfaction.

【技术实现步骤摘要】
一种死锁处理方法及装置
本专利技术涉及分布式系统领域,特别涉及一种死锁处理方法及装置。
技术介绍
MySQL是开源社区非常受欢迎的数据库系统,随着国家互联网+、电子商务、移动互联网的深入发展,基于MySQL的应用越来越广泛。随着数据量的增加,业务需求场景也与日俱增,每天都在变化中。MySQL数据库的操作变更在这个背景下变得频繁、重要。为了确保基于MySQL的产品和应用的稳定性,需要确保MySQL的更新操作是稳定可控的。在使用了MySQL后,在高并发场景下,在不了解InnoDB的内部技术实现的情况下,很容易出现死锁错误。目前业界大部分的MySQL数据库死锁分析主要依赖人工操作。根据MySQL的死锁信息来人工判断死锁发生的原因,依赖人工来分析和重现,分析的时间非常长。这种人工分析的情况难以支撑大量的数据库运维场景,而且效率极低。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的一种死锁处理方法及装置。用以提高提高数据库死锁的分析效率和更快的给出死锁的解决方案。本专利技术提供一种死锁处理方法,包括:监测数据库运行的进程是否发生死锁;当监测到发生死锁时,根据预设的模型重现死锁;根据重现的死锁确定所述死锁发生的过程以及避免死锁发生的语句。在一个实施例,所述当监测到发生死锁时,根据预设的模型重现死锁,可包括:当监测到发生死锁时,启动第二线程;从第一线程中拉取所述与死锁相关的表结构、数据以及更新语句,所述第一线程包含发生了死锁的数据库;将所述与死锁相关的表结构、数据以及更新语句输入所述预设模型;根据所述预设模型来并发事务操作,重现死锁发生的场景。在一个实施例,所述监测数据库运行的进程是否发生死锁,可包括:当数据库发生死锁错误时,数据库死锁监控程序捕获所述数据库的死锁错误。在一个实施例,所述方法还可包括:当监测到发生死锁时,获取在所述死锁中被牺牲的事务以及与所述死锁的产生相关联的事务;确定与所述在所述死锁中被牺牲的事务以及与所述死锁的产生相关联的事务相关的表结构、数据以及更新语句。本专利技术还提供一种死锁处理装置,包括:监测模块,用于监测数据库运行的进程是否发生死锁;死锁重现模块,用于当监测到发生死锁时,根据预设的模型重现死锁;第一确定模块,用于根据重现的死锁确定所述死锁发生的过程以及避免死锁发生的语句。在一个实施例,所述死锁重现模块,可包括:启动子模块,用于当监测到发生死锁时,启动第二线程;拉取子模块,用于从第一线程中拉取所述与死锁相关的表结构、数据以及更新语句,所述第一线程包含发生了死锁的数据库;输入子模块,用于将所述与死锁相关的表结构、数据以及更新语句输入所述预设模型;重现子模块,用于根据所述预设模型来并发事务操作,重现死锁发生的场景。在一个实施例,所述监测模块,可包括:捕获子模块,用于当数据库发生死锁错误时,数据库死锁监控程序捕获所述数据库的死锁错误。在一个实施例,所述装置还可包括:获取模块,用于当监测到发生死锁时,获取在所述死锁中被牺牲的事务以及与所述死锁的产生相关联的事务;第二确定模块,用于确定与所述在所述死锁中被牺牲的事务以及与所述死锁的产生相关联的事务相关的表结构、数据以及更新语句。本专利技术的实施例提供的技术方案可以包括以下有益效果:上述技术方案,通过监测数据库运行的进程是否发生死锁;当监测到发生死锁时,根据预设的模型重现死锁;根据重现的死锁确定死锁发生的过程以及避免死锁发生的语句。由于在监控到数据库有死锁错误的时候,根据预设模型来进行死锁重现和分析,最终给出不会导致死锁的更新语句,从而极大提高了数据库死锁的分析效率和更快的给出了解决方案,给业务的稳定性带来了更好的帮助,提升了用户体验满意度。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。附图说明附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实施例一起用于解释本专利技术,并不构成对本专利技术的限制。在附图中:图1为本专利技术实施例中一种死锁处理方法的流程图;图2为本专利技术实施例中一种死锁处理方法中步骤S12的流程图;图3为本专利技术实施例中另一种死锁处理方法的流程图;图4为本专利技术实施例中另一种死锁处理方法的流程图;图5为本专利技术实施例中一种死锁处理装置的框图;图6为本专利技术实施例中一种死锁处理装置中死锁重现模块52的框图;图7为本专利技术实施例中另一种死锁处理装置的框图。具体实施方式以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术,并不用于限定本专利技术。图1所示为本专利技术实施例中一种死锁处理方法的流程图,如图1所示,该死锁处理方法包括以下步骤S11-S13:步骤S11,监测数据库运行的进程是否发生死锁。步骤S12,当监测到发生死锁时,根据预设的模型重现死锁。步骤S13,根据重现的死锁确定死锁发生的过程以及避免死锁发生的语句。本专利技术可用于MySQL数据库中,是针对MySQL的死锁问题建立的一套自动化的死锁重现和问题分析的方案。本专利技术实施例的上述方法,通过监测数据库运行的进程是否发生死锁;当监测到发生死锁时,根据预设的模型重现死锁;根据重现的死锁确定死锁发生的过程以及避免死锁发生的语句。由于在监控到数据库有死锁错误的时候,根据预设模型来进行死锁重现和分析,最终给出不会导致死锁的更新语句,从而提高了数据库死锁的分析效率和更快的给出了解决方案,给业务的稳定性带来了更好的帮助,提升了用户体验满意度。在一个实施例,如图2所示,步骤S12可包括以下步骤S121-S124:步骤S121,当监测到发生死锁时,启动第二线程。步骤S122,从第一线程中拉取与死锁相关的表结构、数据以及更新语句,第一线程包含发生了死锁的数据库。步骤S123,将与死锁相关的表结构、数据以及更新语句输入预设模型。步骤S124,根据预设模型来并发事务操作,重现死锁发生的场景。本实施例中,提供一个MySQL死锁错误实时监控模块,当监测到发生死锁时,启动另外一个线程,即第二线程,从有死锁的数据库里面拉取发生了死锁的表结构,更新语句和相关的数据,构建死锁环境模块,包括与死锁相关的表结构,数据库语句,数据等。提供一个死锁重现和分析程序模块,根据设定的模型来并发事务操作,最终得到重现的场景,在重现死锁后给出死锁产生的过程和避免死锁发生的语句。从而极大提高了数据库死锁的分析效率和更快的给出了解决方案。在一个实施例,如图3所示,步骤S11可包括以下步骤S111:步骤S111,当数据库发生死锁错误时,数据库死锁监控程序捕获数据库的死锁错误。本实施例提供一个MySQL数据库死锁监控程序,该程序会把数据库的死锁错误捕获。捕获到死锁后,启动另外一个线程,即第二线程。从而可以准确的监控到数据库的死锁错误。在一个实施例,如图4所示,该死锁处理方法包括以下步骤S14-S15:步骤S14,当监测到发生死锁时,获取在死锁中被牺牲的事务以及与死锁的产生相关联的事务。步骤S15,确定与在死锁中被牺牲的事务以及与死锁的产生相关联的事务相关的表结本文档来自技高网...
一种死锁处理方法及装置

【技术保护点】
一种死锁处理方法,其特征在于,包括:监测数据库运行的进程是否发生死锁;当监测到发生死锁时,根据预设的模型重现死锁;根据重现的死锁确定所述死锁发生的过程以及避免死锁发生的语句。

【技术特征摘要】
1.一种死锁处理方法,其特征在于,包括:监测数据库运行的进程是否发生死锁;当监测到发生死锁时,根据预设的模型重现死锁;根据重现的死锁确定所述死锁发生的过程以及避免死锁发生的语句。2.如权利要求1所述的方法,其特征在于,所述当监测到发生死锁时,根据预设的模型重现死锁,包括:当监测到发生死锁时,启动第二线程;从第一线程中拉取所述与死锁相关的表结构、数据以及更新语句,所述第一线程包含发生了死锁的数据库;将所述与死锁相关的表结构、数据以及更新语句输入所述预设模型;根据所述预设模型来并发事务操作,重现死锁发生的场景。3.如权利要求1或2所述的方法,其特征在于,所述监测数据库运行的进程是否发生死锁,包括:当数据库发生死锁错误时,数据库死锁监控程序捕获所述数据库的死锁错误。4.如权利要求1或2所述的方法,其特征在于,所述方法还包括:当监测到发生死锁时,获取在所述死锁中被牺牲的事务以及与所述死锁的产生相关联的事务;确定与所述在所述死锁中被牺牲的事务以及与所述死锁的产生相关联的事务相关的表结构、数据以及更新语句。5.一种死锁处理装置,其特征在于,包括:监测模块,用于...

【专利技术属性】
技术研发人员:杨德华
申请(专利权)人:无线生活杭州信息科技有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1