CN110399378A - 数据库系统锁操作分析方法及装置 - Google Patents
数据库系统锁操作分析方法及装置 Download PDFInfo
- Publication number
- CN110399378A CN110399378A CN201810342398.5A CN201810342398A CN110399378A CN 110399378 A CN110399378 A CN 110399378A CN 201810342398 A CN201810342398 A CN 201810342398A CN 110399378 A CN110399378 A CN 110399378A
- Authority
- CN
- China
- Prior art keywords
- lock
- information
- transactional
- data
- sql
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种数据库系统锁操作分析方法及装置,涉及数据库技术领域,其中方法包括:获取数据库系统的事务性操作的事务信息以及与此事务性操作相关联的锁信息并存储,获得对于数据资源进行的锁操作的锁操作分析结果,根据锁操作分析结果对数据库系统的事务性操作进行监控并对事务性操作进行调优处理。本公开的数据库系统锁操作分析方法及装置,通过回溯或实时得到事务性操作中的锁时序、锁等待时长等,分析锁操作是否发生异常,并能够对于SQL执行语句进行分析、优化,可应用于对数据库系统进行调优,也可以应用于公有云的数据库调优服务,能够保证SQL执行语句的优化效果,有效减少执行时间,提高数据库的运行效率。
Description
技术领域
本公开涉及数据库技术领域,尤其涉及一种数据库系统锁操作分析方法及装置。
背景技术
在互联网发展的多个阶段中,数据库的作用都是很重要的,数据库是网络应用中必不可少的持久化组件。数据库需要支持大规模的并发读写,为了对共享资源进行互斥管理,设计了锁机制。根据场景和资源粒度不同,设计了表锁,行锁,间隙锁等。数据库中锁的应用,保证了共享访问的正确性,但是,锁的使用不当必然会降低数据库的运行效率,甚至导致错误。例如:数据库的表设计不当、SQL编写问题导致不必要的锁等待;各事务(线程)循环等待而产生死锁等。
在现有的数据库系统使用中,需要监控锁操作是否出现问题,以及对数据操作进行优化处理。目前,只能通过数据库提供的命令行查询运行时信息,对锁操作进行人工分析。例如,开源数据库软件MySQL,开放SQL命令,通过在MySQL用户控制台中执行SQL命令得到运行时锁操作的信息以及事务信息。但是,以此方式获得锁操作的信息以及事务信息,需要较强的专业技能,对于例如业务研发、测试、运维等角色则较难掌握。并且,现有的数据库提供的锁操作命令行查询功能有限,加锁时间、等待时间等都没有提供。而且,当死锁发生时/或者锁释放时,数据库中提供的锁和事务信息已经清空,无法追溯,不利于定位、分析锁操作出现的问题。因此,需要一种新的对数据库系统的锁操作进行分析的技术方案。
发明内容
有鉴于此,本发明要解决的一个技术问题是提供一种数据库系统锁操作分析方法及装置。
根据本公开的一个方面,提供一种数据库系统锁操作分析方法,包括:获取数据库系统的事务性操作的事务信息以及与此事务性操作相关联的锁信息;存储所述事务信息和所述锁信息并根据所述事务性操作的处理状态更新所述事务信息和所述锁信息;基于存储的所述事务信息和所述锁信息获得事务性操作中对于数据资源进行的锁操作的锁操作分析结果;根据所述锁操作分析结果对所述数据库系统的事务性操作进行监控并对所述事务性操作进行调优处理。
可选地,所述获取数据库系统的事务性操作的事务信息以及与此事务性操作相关联的锁信息包括:设置与所述数据库系统对应的事务及锁信息数据库,其中,所述数据库系统与所述事务及锁信息数据库为主从模式,所述事务及锁信息数据库为从数据库;获取所述数据库系统同步到所述事务及锁信息数据库的事务性操作数据;根据所述事务性操作数据获得所述事务信息和所述锁信息。
可选地,所述存储所述事务信息和所述锁信息并根据所述事务性操作的处理状态更新所述事务信息和所述锁信息包括:在所述事务及锁信息数据库中建立数据表,将所述事务信息、所述锁信息存储在所述数据表中;其中,所述锁信息包括:锁操作信息、锁与事务关联信息;根据所述事务性操作数据更新已存储在所述数据表中的所述事务信息、所述锁信息。
可选地,所述事务信息包括:事务ID、事务状态、等待的锁ID、等待开始的时间、等待结束的时间、SQL语句;所述锁操作信息包括:锁ID、锁类型、事务ID、锁是否有效;所述锁与事务关联信息包括:申请锁资源的事务ID、申请的锁ID、阻塞的事务ID、阻塞的锁ID。
可选地,所述基于存储的所述事务信息和所述锁信息获得事务性操作中对于数据资源进行的锁操作的锁操作分析结果包括:从所述数据表中读取所述事务信息和所述锁信息;基于所述事务信息和所述锁信息以及锁的互斥关系获得正在进行或已完成的事务性操作的所述锁操作分析结果,并将所述锁操作分析结果进行图形化展示;其中,所述锁操作分析结果包括:锁之间的等待依赖关系、锁所属的事务性操作、锁开始时间以及锁结束时间、锁的类型、使用的索引。
可选地,所述根据所述锁操作分析结果对所述数据库系统的事务性操作进行监控包括:基于锁开始时间以及锁结束时间获得锁等待时长;判断所述锁等待时长是否超过与此锁的类型相对应的等待时长阈值,如果是,则确定此锁所述的事务性操作发生异常或需要进行优化。
可选地,所述对所述事务性操作进行调优处理包括:基于所述事务信息获取与发生异常或需要进行优化的事务性操作相对应的SQL执行语句;对所述SQL执行语句进行优化处理。
可选地,所述对所述SQL执行语句进行优化处理包括:获取所述SQL执行语句在所述数据库系统中的执行计划;其中,所述执行计划包括:是否使用索引、操作的数据行数;基于预设的执行规则判断所述执行计划是否合理,如果否,则优化所述SQL执行语句。
可选地,所述对所述SQL执行语句进行优化处理包括:对所述SQL执行语句进行解析,获得数据操作信息;其中,所述数据操作信息包括:操作类型、是否使用索引、操作范围;基于预设的数据操作规则确定与所述数据操作信息对应的数据操作是否合理,如果否,则优化所述SQL执行语句,以使优化后的所述SQL执行语句与所述数据操作规则相匹配。
可选地,所述事务性操作包括:事务性增、改、删数据操作。
根据本公开的另一方面,提供一种数据库系统锁操作分析装置,包括:信息获取模块,用于获取数据库系统的事务性操作的事务信息以及与此事务性操作相关联的锁信息;信息存储模块,用于存储所述事务信息和所述锁信息并根据所述事务性操作的处理状态更新所述事务信息和所述锁信息;信息分析模块,用于基于存储的所述事务信息和所述锁信息获得事务性操作中对于数据资源进行的锁操作的锁操作分析结果;监控优化模块,用于根据所述锁操作分析结果对所述数据库系统的事务性操作进行监控并对所述事务性操作进行调优处理。
可选地,所述信息获取模块,用于设置与所述数据库系统对应的事务及锁信息数据库,其中,所述数据库系统与所述事务及锁信息数据库为主从模式,所述事务及锁信息数据库为从数据库;获取所述数据库系统同步到所述事务及锁信息数据库的事务性操作数据;根据所述事务性操作数据获得所述事务信息和所述锁信息。
可选地,所述信息存储模块,用于在所述事务及锁信息数据库中建立数据表,将所述事务信息、所述锁信息存储在所述数据表中;其中,所述锁信息包括:锁操作信息、锁与事务关联信息;根据所述事务性操作数据更新已存储在所述数据表中的所述事务信息、所述锁信息。
可选地,所述事务信息包括:事务ID、事务状态、等待的锁ID、等待开始的时间、等待结束的时间、SQL语句;所述锁操作信息包括:锁ID、锁类型、事务ID、锁是否有效;所述锁与事务关联信息包括:申请锁资源的事务ID、申请的锁ID、阻塞的事务ID、阻塞的锁ID。
可选地,所述信息分析模块,包括:锁分析单元,用于从所述数据表中读取所述事务信息和所述锁信息;基于所述事务信息和所述锁信息以及锁的互斥关系获得正在进行或已完成的事务性操作的所述锁操作分析结果,展示单元,用于将所述锁操作分析结果进行图形化展示;其中,所述锁操作分析结果包括:锁之间的等待依赖关系、锁所属的事务性操作、锁开始时间以及锁结束时间、锁的类型、使用的索引。
可选地,所述监控优化模块,用于基于锁开始时间以及锁结束时间获得锁等待时长;判断所述锁等待时长是否超过与此锁的类型相对应的等待时长阈值,如果是,则确定此锁所述的事务性操作发生异常或需要进行优化。
可选地,所述监控优化模块,包括:SQL获取单元,用于基于所述事务信息获取与发生异常或需要进行优化的事务性操作相对应的SQL执行语句;SQL优化单元,用于对所述SQL执行语句进行优化处理。
可选地,所述SQL优化单元,用于获取所述SQL执行语句在所述数据库系统中的执行计划;其中,所述执行计划包括:是否使用索引、操作的数据行数;基于预设的执行规则判断所述执行计划是否合理,如果否,则优化所述SQL执行语句。
可选地,所述SQL优化单元,用于对所述SQL执行语句进行解析,获得数据操作信息;其中,所述数据操作信息包括:操作类型、是否使用索引、操作范围;基于预设的数据操作规则确定与所述数据操作信息对应的数据操作是否合理,如果否,则优化所述SQL执行语句,以使优化后的所述SQL执行语句与所述数据操作规则相匹配。
可选地,所述事务性操作包括:事务性增、改、删数据操作。
根据本公开的又一方面,提供一种数据库系统锁操作分析装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上所述的方法。
根据本公开的再一方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如上所述的方法。
本公开的数据库系统锁操作分析方法及装置,持久化数据库系统的事务性操作的事务信息以及相关联的锁信息并进行更新,获得对于数据资源进行的锁操作的锁操作分析结果,对数据库系统的事务性操作进行监控并对事务性操作进行调优处理;提供SQL执行语句的缺陷定位和调优方案,通过回溯或实时得到事务性操作中的锁时序、锁等待时长等,分析锁操作是否发生异常,并能够对于SQL执行语句进行分析、优化,可应用于对数据库系统进行调优,也可以应用于公有云的数据库调优服务,能够保证SQL执行语句的优化效果,有效减少执行时间,提高数据库的运行效率。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为根据本公开的数据库系统锁操作分析方法的一个实施例的流程示意图;
图2A为根据本公开的数据库系统锁操作分析方法的应用场景示意图,图2B为根据本公开的数据库系统锁操作分析方法的锁操作分析结果示意图;
图3为根据本公开的数据库系统锁操作分析装置的一个实施例的模块示意图;
图4为根据本公开的数据库系统锁操作分析装置的一个实施例中的信息分析模块的模块示意图;
图5为根据本公开的数据库系统锁操作分析装置的一个实施例中的监控优化模块的模块示意图;
图6为根据本公开的数据库系统锁操作分析装置的另一个实施例的模块示意图。
具体实施方式
下面参照附图对本公开进行更全面的描述,其中说明本公开的示例性实施例。下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。下面结合各个图和实施例对本公开的技术方案进行多方面的描述。
图1为根据本公开的数据库系统锁操作分析方法的一个实施例的流程示意图,如图所示:
步骤101,获取数据库系统的事务性操作的事务信息以及与此事务性操作相关联的锁信息。
事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。事务性操作是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。数据库锁的是为了处理并发问题,比如"脏数据"、修改丢失等问题。对于数据库的并发需要使用事务来控制,事务并发问题需要数据库锁来控制。数据库系统可以为MySQL数据库等多种数据库系统,事务性操作包括:事务性增、改、删数据操作等,锁包括表锁、行锁、间隙锁等。
步骤102,存储事务信息和锁信息并根据事务性操作的处理状态更新事务信息和锁信息。
步骤103,基于存储的事务信息和锁信息获得事务性操作中对于数据资源进行的锁操作的锁操作分析结果。
步骤104,根据锁操作分析结果对数据库系统的事务性操作进行监控并对事务性操作进行调优处理。
在一个实施例中,设置与数据库系统对应的事务及锁信息数据库,数据库系统与事务及锁信息数据库为主从模式,事务及锁信息数据库为从数据库。数据库系统将其进行的事务性操作数据发送给事务及锁信息数据库,获取数据库系统同步到事务及锁信息数据库的事务性操作数据,根据事务性操作数据获得事务信息和锁信息。
如图2A所示,应用层关注业务场景和逻辑处理,接收用户的请求,维持数据库连接,根据需要从数据库中读取信息,将对于数据的处理结果写数据库,并将结果返回给用户。连接数据库的方式可以为直连方式,也可以通过DB proxy进行连接。如果为直连方式,则应用层维护数据库信息,包括:主库信息、从库信息、DB鉴权、读写分离、负载均衡、分片路由等。如果通过DB proxy连接数据库,应用层只需发送SQL执行语句,DB proxy对于应用层能够做到透明代理。
DB层采用MySQL数据库系统的主多从结构。多个主数据库之间采用分片方案,分片的路由策略由DB proxy完成。MoreSql为设置的事务及锁信息数据库,可以在MySQL数据库系统的基础上进行二次开发,保留了协议、语法、优化器等逻辑,MySQL与MoreSQL采用主从方式,即MoreSql可以同步MySQL的事务性操作数据,事务性操作数据包括对数据的写、改、删等操作信息。
在无法替换生产环境的MySQL数据库系统时,可以在MySQL主数据库系统下挂有MoreSQL从库,从而得到MySQL主数据库系统的事务性操作数据。DB proxy也可以按照正常的数据库调用方式访问MoreSQL。
在一个实施例中,在事务及锁信息数据库中建立数据表,将事务信息、锁信息存储在数据表中,锁信息包括:锁操作信息、锁与事务关联信息等。根据事务性操作数据更新已存储在数据表中的事务信息、锁信息。事务信息包括:事务ID、事务状态、等待的锁ID、等待开始的时间、等待结束的时间、SQL语句等;锁操作信息包括:锁ID、锁类型、事务ID、锁是否有效等;锁与事务关联信息包括:申请锁资源的事务ID、申请的锁ID、阻塞的事务ID、阻塞的锁ID等。
例如,通过SQL语句CREATE DATABASE lock在事务及锁信息数据库中创建数据库lock,在lock库下,创建三张innodb引擎的数据表,分别为lock.trx(事务信息表)、Lock.lock(锁操作信息表)和
Lock.relationship(锁与事务关联信息表),三个数据表的字段如下表1、2、3所示:
字段名 | 说明 |
trx_id | 唯一事务ID |
trx_state | 当前事务的状态 |
trx_started | 事务开始的时间 |
trx_requested_lock_id | 等待的锁id |
trx_wait_started | 等待开始的时间 |
trx_wait_ended | 等待结束的时间 |
trx_query | SQL语句 |
表1-事务信息表
表2-锁操作信息表
字段名 | 说明 |
requesting_trx_id | 申请锁资源的事务ID |
requesting_lock_id | 申请的锁的ID |
blocking_trx_id | 阻塞的事务ID |
blocking_lock_id | 阻塞的锁的ID |
表3-锁与事务关联信息表
对于上述三张数据表中存储的数据进行持久化处理,不会因为数据库系统中的事务或者锁的结束而删除。可以通过修改MySQL的源码,MoreSQL获取事务和锁信息并填写到新建的Lock的三张表中,并实时根据事务性操作的处理状态对事务和锁信息进行数据更新。
在一个实施例中,从数据表中读取事务信息和锁信息,基于事务信息和锁信息以及锁的互斥关系获得正在进行或已完成的事务性操作的锁操作分析结果,并将锁操作分析结果进行图形化展示。锁操作分析结果包括:锁之间的等待依赖关系、锁所属的事务性操作、锁开始时间以及锁结束时间、锁的类型、使用的索引等。
例如,提取MoreSQL中innodb引擎的三张数据表lock.trx、Lock.lock、Lock.relationship中存储的事务信息、锁操作信息、锁与事务关联信息。可以使用SQL查询方式,例如:select last id from lock.trx;得到lock.trx表最新的id,select*fromlock.trx where id=‘last id’,获取lock.trx中存储的事务信息。
MySQL数据库中具有多种锁,例如LOCK_GAP、LOCK_ORDINARY等。各种锁的互斥关系如下表4所示,表4中的“+”表示兼容,不需要等待;表4中的“-”表示互斥,需要添加到数据资源的等待队列中。
表4-MySQL数据库中的锁的互斥关系表
锁操作分析结果可以转换成Lock_graph的数据结构,可以将Lock_graph的数据结构进行图形化展示,并能够根据点击进行收起/展开。如图2B所示,事务的等待队Transaction wait lists中记录了事务t1、t2、t3和t4的等待顺序,事务t1、t2、t3和t4中分别包含了该事务的SQL执行语句SQL1、SQL2、SQL3和SQL4。对于资源1,事务t2对资源1加了x锁(排他锁),并持操作权,事务t1此时想对资源1加s锁(共享锁)时,需要等待,并且标明了x锁和s锁的开始时间和结束时间。对于资源2,事务t1、t4、t2和t3分别先后对资源2加了x锁或s锁,并标明了x锁和s锁的开始时间和结束时间。
在一个实施例中,事务信息和锁信息中包含有事务结束时间、锁是否失效的状态等信息并且持久化,可以通过持久化的数据分析锁的开始时间和结束时间。基于锁开始时间以及锁结束时间获得锁等待时长;判断锁等待时长是否超过与此锁的类型相对应的等待时长阈值,时长阈值可以根据锁的类型进行设置,如果是,则确定此锁的事务性操作发生异常或需要进行优化。例如,对商品库中的数据进行增、删、改、查等操作,如果涉及到对同一个数据的操作,可能有多并发互斥的场景。判断锁的等待是否异常,例如如果锁等待时长超过等待时长阈值20s,则确定此锁的事务性操作发生异常或需要进行优化。
对事务性操作进行调优处理可以有多种。基于事务信息获取与发生异常或需要进行优化的事务性操作相对应的SQL执行语句,对SQL执行语句进行优化处理。结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
获取SQL执行语句在数据库系统中的执行计划,执行计划包括:是否使用索引、操作的数据行数等。基于预设的执行规则判断执行计划是否合理,如果否,则优化SQL执行语句。
例如,通过数据库的系统命令explain SQL得到该SQL的执行计划,通过判断执行计划index的使用等信息,判断SQL编写的合理性和高效性。Sql explain是MySQL源码提供命令,通过Sql explain命令可以获得MySQL系统对SQL执行语句的执行计划,包括:是否使用了索引,查询的行数等。根据预设的执行规则,例如SQL书写规则、index使用规则等,判断此SQL书写的是否合理,是否进行了全文扫描等长耗时操作等。
对SQL执行语句进行解析,获得数据操作信息,数据操作信息包括:操作类型、是否使用索引、操作范围等。基于预设的数据操作规则确定与数据操作信息对应的数据操作是否合理,如果否,则优化SQL执行语句,以使优化后的SQL执行语句与数据操作规则相匹配。
例如,根据SQL的语法解析,得识别出操作类型,例如select,insert,or update等,识别出SQL执行语句的操作范围,例如是否全文扫描等,或者获得SQL执行语句使用的index取定的范围,用以匹配已有的数据操作规则。
数据操作规则可以有多种,例如select语句不进行全文索引等。DBA(数据库管理员)在长期的工作中,总结出了很多数据操作规则(使得SQL执行效率高的数据操作规则)。基于数据操作规则确定与数据操作信息对应的数据操作是否合理,是否违反了SQL的高效原则。通过Sql parser解析了SQL执行语句的每个部分,将每个部分对应到具体的数据操作规则上,如果违反,则报警提醒。
在优化SQL执行语句后,将优化后的SQL执行语句在数据库系统中重新运行,获得事务性操作对应的SQL执行语句的锁操作分析结果,并将锁操作分析结果进行图形化展示,得到锁之间的等待依赖关系以及锁等待时长,判断优化后的SQL执行语句的执行效率是否有所提高。
在一个实施例中,如图3所示,本公开提供一种数据库系统锁操作分析装置,包括:信息获取模块31、信息存储模块32、信息分析模块33和监控优化模块34。信息获取模块31获取数据库系统的事务性操作的事务信息以及与此事务性操作相关联的锁信息。信息存储模块32存储事务信息和锁信息并根据事务性操作的处理状态更新事务信息和锁信息。
信息分析模块33基于存储的事务信息和锁信息获得事务性操作中对于数据资源进行的锁操作的锁操作分析结果。监控优化模块34根据锁操作分析结果对数据库系统的事务性操作进行监控并对事务性操作进行调优处理。
在一个实施例中,信息获取模块31设置与数据库系统对应的事务及锁信息数据库,数据库系统与事务及锁信息数据库为主从模式,事务及锁信息数据库为从数据库。信息获取模块31获取数据库系统同步到事务及锁信息数据库的事务性操作数据,根据事务性操作数据获得事务信息和锁信息。
信息存储模块32在事务及锁信息数据库中建立数据表,将事务信息、锁信息以及存储在数据表中,锁信息包括:锁操作信息、锁与事务关联信息等。信息存储模块32根据事务性操作数据更新已存储在数据表中的事务信息、锁信息。事务信息包括:事务ID、事务状态、等待的锁ID、等待开始的时间、等待结束的时间、SQL语句等;锁操作信息包括:锁ID、锁类型、事务ID、锁是否有效等;锁与事务关联信息包括:申请锁资源的事务ID、申请的锁ID、阻塞的事务ID、阻塞的锁ID等。
如图4所示,信息分析模块33,包括:锁分析单元331和展示单元332。锁分析单元331从数据表中读取事务信息和锁信息,基于事务信息和锁信息以及锁的互斥关系获得正在进行或已完成的事务性操作的锁操作分析结果。展示单元332将锁操作分析结果进行图形化展示。锁操作分析结果包括:锁之间的等待依赖关系、锁所属的事务性操作、锁开始时间以及锁结束时间、锁的类型、使用的索引等。
监控优化模块34,用于基于锁开始时间以及锁结束时间获得锁等待时长,判断锁等待时长是否超过与此锁的类型相对应的等待时长阈值,如果是,则确定此锁的事务性操作发生异常或需要进行优化。
如图5所示,监控优化模块34包括:SQL获取单元341和SQL优化单元342。SQL获取单元341基于事务信息获取与发生异常或需要进行优化的事务性操作相对应的SQL执行语句。SQL优化单元342对SQL执行语句进行优化处理。
SQL优化单元342获取SQL执行语句在数据库系统中的执行计划,执行计划包括:是否使用索引、操作的数据行数等。SQL优化单元342判断执行计划是否合理,如果否,则优化SQL执行语句。SQL优化单元342对SQL执行语句进行解析,获得数据操作信息,数据操作信息包括:操作类型、是否使用索引、操作范围等。SQL优化单元342基于预设的数据操作规则确定与数据操作信息对应的数据操作是否合理,如果否,则优化SQL执行语句,以使优化后的SQL执行语句与数据操作规则相匹配。
图6为根据本公开的数据库系统锁操作分析装置的另一个实施例的模块示意图。如图6所示,该装置可包括存储器61、处理器62、通信接口63以及总线64。存储器61用于存储指令,处理器62耦合到存储器61,处理器62被配置为基于存储器61存储的指令执行实现上述的数据库系统锁操作分析方法。
存储器61可以为高速RAM存储器、非易失性存储器(non-volatile memory)等,存储器61也可以是存储器阵列。存储器61还可能被分块,并且块可按一定的规则组合成虚拟卷。处理器62可以为中央处理器CPU,或专用集成电路ASIC(Application SpecificIntegrated Circuit),或者是被配置成实施本公开的数据库系统锁操作分析方法的一个或多个集成电路。
在一个实施例中,本公开提供一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现如上任一个实施例中的数据库系统锁操作分析方法。
上述实施例中的数据库系统锁操作分析方法和装置,持久化数据库系统的事务性操作的事务信息以及相关联的锁信息并进行更新,获得对于数据资源进行的锁操作的锁操作分析结果,对数据库系统的事务性操作进行监控并对事务性操作进行调优处理;提供SQL执行语句的缺陷定位和调优方案,通过回溯或实时得到事务性操作中的锁时序、锁等待时长等,分析锁操作是否发生异常,并能够对于SQL执行语句进行分析、优化,可应用于对数据库系统进行调优,也可以应用于公有云的数据库调优服务,能够保证SQL执行语句的优化效果,有效减少执行时间,提高数据库的运行效率。
可能以许多方式来实现本公开的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和系统。用于方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
本公开的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本公开的原理和实际应用,并且使本领域的普通技术人员能够理解本公开从而设计适于特定用途的带有各种修改的各种实施例。
Claims (22)
1.一种数据库系统锁操作分析方法,包括:
获取数据库系统的事务性操作的事务信息以及与此事务性操作相关联的锁信息;
存储所述事务信息和所述锁信息并根据所述事务性操作的处理状态更新所述事务信息和所述锁信息;
基于存储的所述事务信息和所述锁信息获得事务性操作中对于数据资源进行的锁操作的锁操作分析结果;
根据所述锁操作分析结果对所述数据库系统的事务性操作进行监控并对所述事务性操作进行调优处理。
2.如权利要求1所述的方法,所述获取数据库系统的事务性操作的事务信息以及与此事务性操作相关联的锁信息包括:
设置与所述数据库系统对应的事务及锁信息数据库,其中,所述数据库系统与所述事务及锁信息数据库为主从模式,所述事务及锁信息数据库为从数据库;
获取所述数据库系统同步到所述事务及锁信息数据库的事务性操作数据;
根据所述事务性操作数据获得所述事务信息和所述锁信息。
3.如权利要求2所述的方法,所述存储所述事务信息和所述锁信息并根据所述事务性操作的处理状态更新所述事务信息和所述锁信息包括:
在所述事务及锁信息数据库中建立数据表,将所述事务信息、所述锁信息存储在所述数据表中;其中,所述锁信息包括:锁操作信息、锁与事务关联信息;
根据所述事务性操作数据更新已存储在所述数据表中的所述事务信息、所述锁信息。
4.如权利要求3所述的方法,其中,
所述事务信息包括:事务ID、事务状态、等待的锁ID、等待开始的时间、等待结束的时间、SQL语句;
所述锁操作信息包括:锁ID、锁类型、事务ID、锁是否有效;
所述锁与事务关联信息包括:申请锁资源的事务ID、申请的锁ID、阻塞的事务ID、阻塞的锁ID。
5.如权利要求4所述的方法,所述基于存储的所述事务信息和所述锁信息获得事务性操作中对于数据资源进行的锁操作的锁操作分析结果包括:
从所述数据表中读取所述事务信息和所述锁信息;
基于所述事务信息和所述锁信息以及锁的互斥关系获得正在进行或已完成的事务性操作的所述锁操作分析结果,并将所述锁操作分析结果进行图形化展示;
其中,所述锁操作分析结果包括:锁之间的等待依赖关系、锁所属的事务性操作、锁开始时间以及锁结束时间、锁的类型、使用的索引。
6.如权利要求5所述的方法,所述根据所述锁操作分析结果对所述数据库系统的事务性操作进行监控包括:
基于锁开始时间以及锁结束时间获得锁等待时长;
判断所述锁等待时长是否超过与此锁的类型相对应的等待时长阈值,如果是,则确定此锁所述的事务性操作发生异常或需要进行优化。
7.如权利要求6所述的方法,所述对所述事务性操作进行调优处理包括:
基于所述事务信息获取与发生异常或需要进行优化的事务性操作相对应的SQL执行语句;
对所述SQL执行语句进行优化处理。
8.如权利要求7所述的方法,所述对所述SQL执行语句进行优化处理包括:
获取所述SQL执行语句在所述数据库系统中的执行计划;其中,所述执行计划包括:是否使用索引、操作的数据行数;
基于预设的执行规则判断所述执行计划是否合理,如果否,则优化所述SQL执行语句。
9.如权利要求7所述的方法,所述对所述SQL执行语句进行优化处理包括:
对所述SQL执行语句进行解析,获得数据操作信息;其中,所述数据操作信息包括:操作类型、是否使用索引、操作范围;
基于预设的数据操作规则确定与所述数据操作信息对应的数据操作是否合理,如果否,则优化所述SQL执行语句,以使优化后的所述SQL执行语句与所述数据操作规则相匹配。
10.如权利要求1所述的方法,其中,
所述事务性操作包括:事务性增、改、删数据操作。
11.一种数据库系统锁操作分析装置,包括:
信息获取模块,用于获取数据库系统的事务性操作的事务信息以及与此事务性操作相关联的锁信息;
信息存储模块,用于存储所述事务信息和所述锁信息并根据所述事务性操作的处理状态更新所述事务信息和所述锁信息;
信息分析模块,用于基于存储的所述事务信息和所述锁信息获得事务性操作中对于数据资源进行的锁操作的锁操作分析结果;
监控优化模块,用于根据所述锁操作分析结果对所述数据库系统的事务性操作进行监控并对所述事务性操作进行调优处理。
12.如权利要求11所述的装置,其中,
所述信息获取模块,用于设置与所述数据库系统对应的事务及锁信息数据库,其中,所述数据库系统与所述事务及锁信息数据库为主从模式,所述事务及锁信息数据库为从数据库;获取所述数据库系统同步到所述事务及锁信息数据库的事务性操作数据;根据所述事务性操作数据获得所述事务信息和所述锁信息。
13.如权利要求12所述的装置,其中,
所述信息存储模块,用于在所述事务及锁信息数据库中建立数据表,将所述事务信息、所述锁信息存储在所述数据表中;其中,所述锁信息包括:锁操作信息、锁与事务关联信息;根据所述事务性操作数据更新已存储在所述数据表中的所述事务信息、所述锁信息。
14.如权利要求13所述的装置,其中,
所述事务信息包括:事务ID、事务状态、等待的锁ID、等待开始的时间、等待结束的时间、SQL语句;
所述锁操作信息包括:锁ID、锁类型、事务ID、锁是否有效;
所述锁与事务关联信息包括:申请锁资源的事务ID、申请的锁ID、阻塞的事务ID、阻塞的锁ID。
15.如权利要求14所述的装置,其中,
所述信息分析模块,包括:
锁分析单元,用于从所述数据表中读取所述事务信息和所述锁信息;基于所述事务信息和所述锁信息以及锁的互斥关系获得正在进行或已完成的事务性操作的所述锁操作分析结果,
展示单元,用于将所述锁操作分析结果进行图形化展示;
其中,所述锁操作分析结果包括:锁之间的等待依赖关系、锁所属的事务性操作、锁开始时间以及锁结束时间、锁的类型、使用的索引。
16.如权利要求15所述的装置,其中,
所述监控优化模块,用于基于锁开始时间以及锁结束时间获得锁等待时长;判断所述锁等待时长是否超过与此锁的类型相对应的等待时长阈值,如果是,则确定此锁所述的事务性操作发生异常或需要进行优化。
17.如权利要求16所述的装置,其中,
所述监控优化模块,包括:
SQL获取单元,用于基于所述事务信息获取与发生异常或需要进行优化的事务性操作相对应的SQL执行语句;
SQL优化单元,用于对所述SQL执行语句进行优化处理。
18.如权利要求17所述的装置,其中,
所述SQL优化单元,用于获取所述SQL执行语句在所述数据库系统中的执行计划;其中,所述执行计划包括:是否使用索引、操作的数据行数;基于预设的执行规则判断所述执行计划是否合理,如果否,则优化所述SQL执行语句。
19.如权利要求17所述的装置,其中,
所述SQL优化单元,用于对所述SQL执行语句进行解析,获得数据操作信息;其中,所述数据操作信息包括:操作类型、是否使用索引、操作范围;基于预设的数据操作规则确定与所述数据操作信息对应的数据操作是否合理,如果否,则优化所述SQL执行语句,以使优化后的所述SQL执行语句与所述数据操作规则相匹配。
20.如权利要求11所述的装置,其中,
所述事务性操作包括:事务性增、改、删数据操作。
21.一种数据库系统锁操作分析装置,包括:
存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1至10中任一项所述的方法。
22.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行如权利要求1至10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810342398.5A CN110399378A (zh) | 2018-04-17 | 2018-04-17 | 数据库系统锁操作分析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810342398.5A CN110399378A (zh) | 2018-04-17 | 2018-04-17 | 数据库系统锁操作分析方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110399378A true CN110399378A (zh) | 2019-11-01 |
Family
ID=68319543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810342398.5A Pending CN110399378A (zh) | 2018-04-17 | 2018-04-17 | 数据库系统锁操作分析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110399378A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100192A (zh) * | 2020-09-27 | 2020-12-18 | 中国建设银行股份有限公司 | 数据库锁等待处理方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005505A (zh) * | 2006-01-20 | 2007-07-25 | 国际商业机器公司 | 用于与数据库客户端用户通信的系统和方法 |
US20110029498A1 (en) * | 2009-07-10 | 2011-02-03 | Xkoto, Inc. | System and Method for Subunit Operations in a Database |
CN102354289A (zh) * | 2011-09-21 | 2012-02-15 | 苏州大学 | 一种并发事务的调度方法和相关装置 |
CN102651006A (zh) * | 2011-02-25 | 2012-08-29 | 上海网环信息科技有限公司 | 一种数据库表单记录加锁方法和装置 |
CN103455368A (zh) * | 2013-08-27 | 2013-12-18 | 华为技术有限公司 | 一种死锁检测方法、节点及系统 |
CN103761260A (zh) * | 2013-12-31 | 2014-04-30 | 北京京东尚科信息技术有限公司 | 处理数据库互斥锁的方法和装置以及分布式系统 |
CN104484266A (zh) * | 2014-11-07 | 2015-04-01 | 上海交通大学 | 一种锁使用模式自动化静态分析系统 |
CN106033422A (zh) * | 2015-03-11 | 2016-10-19 | 中国移动通信集团内蒙古有限公司 | 一种数据库操作控制方法、装置及系统 |
CN106874391A (zh) * | 2017-01-12 | 2017-06-20 | 无线生活(杭州)信息科技有限公司 | 一种死锁处理方法及装置 |
CN107908518A (zh) * | 2017-06-29 | 2018-04-13 | 平安科技(深圳)有限公司 | 数据库性能监测方法、装置、存储介质和计算机设备 |
-
2018
- 2018-04-17 CN CN201810342398.5A patent/CN110399378A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005505A (zh) * | 2006-01-20 | 2007-07-25 | 国际商业机器公司 | 用于与数据库客户端用户通信的系统和方法 |
US20110029498A1 (en) * | 2009-07-10 | 2011-02-03 | Xkoto, Inc. | System and Method for Subunit Operations in a Database |
CN102651006A (zh) * | 2011-02-25 | 2012-08-29 | 上海网环信息科技有限公司 | 一种数据库表单记录加锁方法和装置 |
CN102354289A (zh) * | 2011-09-21 | 2012-02-15 | 苏州大学 | 一种并发事务的调度方法和相关装置 |
CN103455368A (zh) * | 2013-08-27 | 2013-12-18 | 华为技术有限公司 | 一种死锁检测方法、节点及系统 |
CN103761260A (zh) * | 2013-12-31 | 2014-04-30 | 北京京东尚科信息技术有限公司 | 处理数据库互斥锁的方法和装置以及分布式系统 |
CN104484266A (zh) * | 2014-11-07 | 2015-04-01 | 上海交通大学 | 一种锁使用模式自动化静态分析系统 |
CN106033422A (zh) * | 2015-03-11 | 2016-10-19 | 中国移动通信集团内蒙古有限公司 | 一种数据库操作控制方法、装置及系统 |
CN106874391A (zh) * | 2017-01-12 | 2017-06-20 | 无线生活(杭州)信息科技有限公司 | 一种死锁处理方法及装置 |
CN107908518A (zh) * | 2017-06-29 | 2018-04-13 | 平安科技(深圳)有限公司 | 数据库性能监测方法、装置、存储介质和计算机设备 |
Non-Patent Citations (2)
Title |
---|
刘英;冯云;: "数据库系统性能调优的研究与实践", 甘肃科技, no. 14 * |
王军: "浅析SQL Server数据库事务锁机制", 太原科技, no. 05 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100192A (zh) * | 2020-09-27 | 2020-12-18 | 中国建设银行股份有限公司 | 数据库锁等待处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2022203666B2 (en) | Generating and applying data transformations in a data import engine | |
US10719528B2 (en) | Data preparation with shared data flows | |
US10262002B2 (en) | Consistent execution of partial queries in hybrid DBMS | |
CN104620239B (zh) | 自适应查询优化 | |
US7984043B1 (en) | System and method for distributed query processing using configuration-independent query plans | |
CN109144994A (zh) | 索引更新方法、系统及相关装置 | |
US11106665B1 (en) | Automated SQL source code review | |
US11474812B1 (en) | Automated data store access source code review | |
AU2022202376B2 (en) | Correlated incremental loading of multiple data sets for an interactive data prep application | |
Affetti et al. | Flowdb: Integrating stream processing and consistent state management | |
CN105930947B (zh) | 用于控制在离散生产线中的制造过程的方法和系统 | |
US10592391B1 (en) | Automated transaction and datasource configuration source code review | |
US7596584B2 (en) | Predicate based group management | |
CN116628023B (zh) | 等待事件类型查询方法、装置、存储介质和电子设备 | |
CN110399378A (zh) | 数据库系统锁操作分析方法及装置 | |
Zellag et al. | Real-time quantification and classification of consistency anomalies in multi-tier architectures | |
US10275237B1 (en) | Automated spring wiring source code review | |
CN110134704A (zh) | 一种基于分布式缓存的大数据集群事务实现方法 | |
US10599425B1 (en) | Automated data access object source code review | |
Mihalcea | High-Performance Java Persistence | |
Böhm et al. | Processes are data: A programming model for distributed applications | |
CN116955368A (zh) | 数据库死锁分析方法、装置、存储介质及电子设备 | |
Noack | Data Lineage and Meta Data Analysis in Data Warehouse Environments |
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 |