CN106874391B - 一种死锁处理方法及装置 - Google Patents
一种死锁处理方法及装置 Download PDFInfo
- Publication number
- CN106874391B CN106874391B CN201710022889.7A CN201710022889A CN106874391B CN 106874391 B CN106874391 B CN 106874391B CN 201710022889 A CN201710022889 A CN 201710022889A CN 106874391 B CN106874391 B CN 106874391B
- Authority
- CN
- China
- Prior art keywords
- deadlock
- database
- occurrence
- monitored
- transaction
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- 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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/825—Indexing scheme relating to error detection, to error correction, and to monitoring the problem or solution involving locking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Machine Translation (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种死锁处理方法及装置,该方法包括:监测数据库运行的进程是否发生死锁;当监测到发生死锁时,根据预设的模型重现死锁;根据重现的死锁确定死锁发生的过程以及避免死锁发生的语句。上述技术方案,由于在监控到数据库有死锁错误的时候,根据预设模型来进行死锁重现和分析,最终给出不会导致死锁的更新语句,从而极大提高了数据库死锁的分析效率和更快的给出了解决方案,给业务的稳定性带来了更好的帮助,提升了用户体验满意度。
Description
技术领域
本发明涉及分布式系统领域,特别涉及一种死锁处理方法及装置。
背景技术
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,确定与在死锁中被牺牲的事务以及与死锁的产生相关联的事务相关的表结构、数据以及更新语句。
本实施例,当监测到发生死锁时,获取在死锁中被牺牲的事务以及与死锁的产生相关联的事务,确定与在死锁中被牺牲的事务以及与死锁的产生相关联的事务相关的表结构、数据以及更新语句。从而可以更方便的构建死锁环境。
基于同一发明构思,本发明实施例还提供了一种死锁处理装置,由于该装置所解决问题的原理与前述死锁处理方法相似,因此该装置的实施可以参见前述方法的实施,重复之处不再赘述。
图5所示为本发明实施例中一种死锁处理装置的框图,如图5所示,该死锁处理装置包括:
监测模块51,用于监测数据库运行的进程是否发生死锁;
死锁重现模块52,用于当监测到发生死锁时,根据预设的模型重现死锁;
第一确定模块53,用于根据重现的死锁确定死锁发生的过程以及避免死锁发生的语句。
在一个实施例,如图6所示,死锁重现模块52,可包括:
启动子模块521,用于当监测到发生死锁时,启动第二线程;
拉取子模块522,用于从第一线程中拉取与死锁相关的表结构、数据以及更新语句,第一线程包含发生了死锁的数据库;
输入子模块523,用于将与死锁相关的表结构、数据以及更新语句输入预设模型;
重现子模块524,用于根据预设模型来并发事务操作,重现死锁发生的场景。
在一个实施例,监测模块51,可包括:
捕获子模块,用于当数据库发生死锁错误时,数据库死锁监控程序捕获数据库的死锁错误。
在一个实施例,如图7所示,该死锁处理装置还可包括:
获取模块54,用于当监测到发生死锁时,获取在死锁中被牺牲的事务以及与死锁的产生相关联的事务;
第二确定模块55,用于确定与在死锁中被牺牲的事务以及与死锁的产生相关联的事务相关的表结构、数据以及更新语句。
本发明可用于MySQL数据库中,是针对MySQL的死锁问题建立的一套自动化的死锁重现和问题分析的方案。本发明实施例的上述装置,通过监测数据库运行的进程是否发生死锁;当监测到发生死锁时,根据预设的模型重现死锁;根据重现的死锁确定死锁发生的过程以及避免死锁发生的语句。由于在监控到数据库有死锁错误的时候,根据预设模型来进行死锁重现和分析,最终给出不会导致死锁的更新语句,从而极大提高了数据库死锁的分析效率和更快的给出了解决方案,给业务的稳定性带来了更好的帮助,提升了用户体验满意度。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (6)
1.一种死锁处理方法,其特征在于,包括:
监测数据库运行的进程是否发生死锁;
当监测到发生死锁时,根据预设的模型重现死锁;
根据重现的死锁确定所述死锁发生的过程以及避免死锁发生的语句;
所述当监测到发生死锁时,根据预设的模型重现死锁,包括:
当监测到发生死锁时,启动第二线程;
从第一线程中拉取所述与死锁相关的表结构、数据以及更新语句,所述第一线程包含发生了死锁的数据库;
将所述与死锁相关的表结构、数据以及更新语句输入所述预设模型;
根据所述预设模型来并发事务操作,重现死锁发生的场景。
2.如权利要求1所述的方法,其特征在于,所述监测数据库运行的进程是否发生死锁,包括:
当数据库发生死锁错误时,数据库死锁监控程序捕获所述数据库的死锁错误。
3.如权利要求1或2所述的方法,其特征在于,所述方法还包括:
当监测到发生死锁时,获取在所述死锁中被牺牲的事务以及与所述死锁的产生相关联的事务;
确定与所述在所述死锁中被牺牲的事务以及与所述死锁的产生相关联的事务相关的表结构、数据以及更新语句。
4.一种死锁处理装置,其特征在于,包括:
监测模块,用于监测数据库运行的进程是否发生死锁;
死锁重现模块,用于当监测到发生死锁时,根据预设的模型重现死锁;
第一确定模块,用于根据重现的死锁确定所述死锁发生的过程以及避免死锁发生的语句;
所述死锁重现模块,包括:
启动子模块,用于当监测到发生死锁时,启动第二线程;
拉取子模块,用于从第一线程中拉取所述与死锁相关的表结构、数据以及更新语句,所述第一线程包含发生了死锁的数据库;
输入子模块,用于将所述与死锁相关的表结构、数据以及更新语句输入所述预设模型;
重现子模块,用于根据所述预设模型来并发事务操作,重现死锁发生的场景。
5.如权利要求4所述的装置,其特征在于,所述监测模块,包括:
捕获子模块,用于当数据库发生死锁错误时,数据库死锁监控程序捕获所述数据库的死锁错误。
6.如权利要求4所述的装置,其特征在于,所述装置还包括:
获取模块,用于当监测到发生死锁时,获取在所述死锁中被牺牲的事务以及与所述死锁的产生相关联的事务;
第二确定模块,用于确定与所述在所述死锁中被牺牲的事务以及与所述死锁的产生相关联的事务相关的表结构、数据以及更新语句。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710022889.7A CN106874391B (zh) | 2017-01-12 | 2017-01-12 | 一种死锁处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710022889.7A CN106874391B (zh) | 2017-01-12 | 2017-01-12 | 一种死锁处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106874391A CN106874391A (zh) | 2017-06-20 |
CN106874391B true CN106874391B (zh) | 2019-12-10 |
Family
ID=59158436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710022889.7A Active CN106874391B (zh) | 2017-01-12 | 2017-01-12 | 一种死锁处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106874391B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110399378B (zh) * | 2018-04-17 | 2024-07-16 | 北京京东尚科信息技术有限公司 | 数据库系统锁操作分析方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0496142A (ja) * | 1990-08-08 | 1992-03-27 | Nec Corp | デッドロック発生装置 |
CN101425070A (zh) * | 2008-08-11 | 2009-05-06 | 深圳市金蝶中间件有限公司 | 一种死锁定位的方法、死锁定位装置和数据系统 |
CN101661402A (zh) * | 2008-08-29 | 2010-03-03 | 国际商业机器公司 | 用于数据库管理系统的死锁处理方法和系统 |
CN103440175A (zh) * | 2013-08-06 | 2013-12-11 | 北京数码视讯科技股份有限公司 | 智能卡的异常处理方法及装置 |
CN104348658A (zh) * | 2013-08-08 | 2015-02-11 | 阿里巴巴集团控股有限公司 | 故障报告生成方法及相关的系统 |
CN105426234A (zh) * | 2015-10-30 | 2016-03-23 | 小米科技有限责任公司 | 数据库死锁检测方法及装置 |
CN105718354A (zh) * | 2016-01-20 | 2016-06-29 | 上海斐讯数据通信技术有限公司 | 一种故障信息的重现方法和重现装置 |
JP2017041063A (ja) * | 2015-08-19 | 2017-02-23 | 株式会社神戸製鋼所 | データ解析方法 |
-
2017
- 2017-01-12 CN CN201710022889.7A patent/CN106874391B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0496142A (ja) * | 1990-08-08 | 1992-03-27 | Nec Corp | デッドロック発生装置 |
CN101425070A (zh) * | 2008-08-11 | 2009-05-06 | 深圳市金蝶中间件有限公司 | 一种死锁定位的方法、死锁定位装置和数据系统 |
CN101661402A (zh) * | 2008-08-29 | 2010-03-03 | 国际商业机器公司 | 用于数据库管理系统的死锁处理方法和系统 |
CN103440175A (zh) * | 2013-08-06 | 2013-12-11 | 北京数码视讯科技股份有限公司 | 智能卡的异常处理方法及装置 |
CN104348658A (zh) * | 2013-08-08 | 2015-02-11 | 阿里巴巴集团控股有限公司 | 故障报告生成方法及相关的系统 |
JP2017041063A (ja) * | 2015-08-19 | 2017-02-23 | 株式会社神戸製鋼所 | データ解析方法 |
CN105426234A (zh) * | 2015-10-30 | 2016-03-23 | 小米科技有限责任公司 | 数据库死锁检测方法及装置 |
CN105718354A (zh) * | 2016-01-20 | 2016-06-29 | 上海斐讯数据通信技术有限公司 | 一种故障信息的重现方法和重现装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106874391A (zh) | 2017-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10437578B2 (en) | Orchestration of software applications upgrade using automatic hang detection | |
US20210081812A1 (en) | Methods and systems for processing software traces | |
US9632919B2 (en) | Request change tracker | |
US20140006358A1 (en) | Creation and replay of a simulation workload using captured workloads | |
US20160283348A1 (en) | Testing of application service versions on live data | |
CN109002472B (zh) | 一种数据库差异的识别方法及装置 | |
US20150169435A1 (en) | Method and apparatus for mining test coverage data | |
CN106534242B (zh) | 一种分布式系统中请求的处理方法以及装置 | |
US10437851B2 (en) | Synchronizing object in local object storage node | |
CN109358898B (zh) | 一种信息处理方法、装置、电子设备和存储介质 | |
CN104965727A (zh) | 一种重启服务器的方法及装置 | |
CN107357731A (zh) | 进程产生core dump问题的监控、分析和处理方法 | |
CN104778252A (zh) | 索引的存储方法和装置 | |
CN106874391B (zh) | 一种死锁处理方法及装置 | |
US10387887B2 (en) | Bloom filter driven data synchronization | |
CN107729541A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
WO2018212924A1 (en) | Enhanced component latency tracking | |
US11715496B2 (en) | Systems and methods for processing video data | |
CN104753811A (zh) | 一种流媒体业务优化方法、设备及系统 | |
CN113220666A (zh) | 数据库迁移后批量处理日志回放方法、装置及系统 | |
CN113128986A (zh) | 长链路交易的报错处理方法及装置 | |
CN109359093B (zh) | 一种规则文件更新方法和系统 | |
US20200394118A1 (en) | Regression test fingerprints based on breakpoint values | |
CN109389271B (zh) | 应用性能管理方法及系统 | |
CN115599793B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |