CN113722347A - 数据库管理的方法、装置、电子设备及存储介质 - Google Patents

数据库管理的方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113722347A
CN113722347A CN202110185229.7A CN202110185229A CN113722347A CN 113722347 A CN113722347 A CN 113722347A CN 202110185229 A CN202110185229 A CN 202110185229A CN 113722347 A CN113722347 A CN 113722347A
Authority
CN
China
Prior art keywords
task
sql
database
preset
conforming
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.)
Granted
Application number
CN202110185229.7A
Other languages
English (en)
Other versions
CN113722347B (zh
Inventor
程鹏兴
张小鹏
曲喆
孙文晖
高新刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
JD Digital Technology Holdings Co Ltd
Original Assignee
JD Digital Technology Holdings Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by JD Digital Technology Holdings Co Ltd filed Critical JD Digital Technology Holdings Co Ltd
Priority to CN202110185229.7A priority Critical patent/CN113722347B/zh
Priority claimed from CN202110185229.7A external-priority patent/CN113722347B/zh
Publication of CN113722347A publication Critical patent/CN113722347A/zh
Application granted granted Critical
Publication of CN113722347B publication Critical patent/CN113722347B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种数据库管理的方法、装置、电子设备及存储介质,属于数据库管理技术领域,所述方法包括:将输入的SQL语句进行解析后生成语法树,得到符合语法的SQL语句;根据预设审核规则对所述符合语法的SQL语句进行规范审核,得到符合规范的SQL语句;对预设数据库实例进行负荷检测,检测通过后执行所述符合规范的SQL语句。本发明用以解决现有技术中人工审核SQL数据存在效率不高容易出错等问题,实现了SQL数据的自动审核,降低了数据库管理的风险。

Description

数据库管理的方法、装置、电子设备及存储介质
技术领域
本发明涉及数据库管理技术领域,尤其涉及一种数据库管理的方法、装置、电子设备及存储介质。
背景技术
随着互联网产品功能不断丰富和完善,后端数据库的表结构可能也需要进行相应的更改来满足新需求。目前互联网公司在需要对线上数据库进行变更时,一种是由开发人员直接登录数据库完成SQL(Structured Query Language,结构化查询语言)变更;另一种是开发人员提出SQL变更需求,然后由专业的DBA(Database Administrator,数据库管理员)人工审核SQL的规范和评估风险,最后再由DBA登录数据库执行SQL以完成变更。
基于上述两种情况,可以看出针对数据库的整个管理方法既繁琐也容易出错且执行进度也不易直观获取。
发明内容
本发明提供一种数据库管理的方法、装置、电子设备及存储介质,用以解决现有技术中人工审核SQL语句存在效率不高、容易出错等问题。
本发明提供一种数据库管理的方法,包括:
将输入的SQL语句进行解析后生成语法树,得到符合语法的SQL语句;
根据预设审核规则对所述符合语法的SQL语句进行规范审核,得到符合规范的SQL语句;
对预设数据库实例进行负荷检测,检测通过后执行所述符合规范的SQL语句
根据本发明提供的一种数据库管理的方法,所述将输入的SQL语句进行解析后生成语法树,得到符合语法的SQL语句,包括:
遍历所述语法树,检测所述SQL语句的语法是否正确。
若检测为正确的,则得到所述符合语法的SQL语句。
根据本发明提供的一种数据库管理的方法,所述根据预设审核规则对所述符合语法的SQL语句进行规范审核,得到符合规范的SQL语句,包括:
根据所述预设审核规则的审查项目与所述符合语法的SQL语句的对应关系进行匹配审核;
若审核通过后,则得到所述符合规范的SQL语句。
根据本发明提供的一种数据库管理的方法,所述对预设数据库实例进行负荷检测,检测通过后执行所述符合规范的SQL语句,包括:
获取所述预设数据库实例的负荷检测值;
根据所述负荷检测值与预设阈值之间的大小关系确定是否检测通过;
当判断出检测通过后,执行所述符合规范的SQL语句;
其中,所述负荷检测包括以下一种或多种组合:CPU和磁盘利用率、数据库主从角色的校验以及有无长事务。
根据本发明提供的一种数据库管理的方法,所述检测通过后执行所述符合规范的SQL语句,包括:
将所述符合规范的SQL语句所描述的任务进入准备状态;
若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度;
返回所述任务执行成功的结果。
根据本发明提供的一种数据库管理的方法,所述若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度,包括:
所述任务在执行过程中,若所述预设数据库实例发生异常,则根据系统实际情况将所述任务设置为挂起或终止或无效状态;
当所述预设数据库实例恢复正常后,将所述任务设置为准备状态以便系统有空闲消费者进程时再次进入执行状态。
根据本发明提供的一种数据库管理的方法,所述若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度,包括:
判断所述任务是否需要进行数据库结构变更的操作;
如判断出所述任务需要进行数据库结构变更的操作,则通过执行命令执行数据库结构变更的操作。
根据本发明提供的一种数据库管理的方法,所述若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度,包括:
判断所述任务是否需要进行增删改数据的操作;
若判断出所述任务需要进行增删改数据的操作,则通过解析数据库的二进制日志并根据执行所述任务的当前线程生成对应的回滚SQL语句。
本发明还提供一种数据库管理的装置,包括:
生成模块,用于将输入的SQL语句进行解析后生成语法树,得到符合语法的SQL语句;
审核模块,用于根据预设审核规则对所述符合语法的SQL语句进行规范审核,得到符合规范的SQL语句;
执行模块,用于对预设数据库实例进行负荷检测,检测通过后执行所述符合规范的SQL语句。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述数据库管理的方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述数据库管理的方法的步骤。
本发明提供的一种数据库管理的方法、装置、电子设备及存储介质,通过生成语法树实现SQL语句的语法检测,并通过预设审核规则对SQL语句进行规范审核,以及通过对数据库实例进行负荷检测,实现了SQL数据的自动审核,提高了效率而且降低了数据库管理的风险。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的数据库管理的方法的流程示意图;
图2是本发明提供的语法树示意图;
图3是本发明提供的SQL任务执行的流程示意图;
图4是本发明提供的预设数据库实例异常的流程示意图;
图5是本发明提供的SQL任务执行过程的流程示意图;
图6是本发明提供的任务状态机的流程示意图;
图7是本发明提供的数据库管理的装置的示意图;
图8是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下对本发明涉及的技术术语进行描述。
SQL(Structured Query Language,结构化查询语言)是一门用于访问和处理数据库的标准的计算机语言,用来访问和操作数据库系统。SQL语句用于取回和更新数据库中的数据。SQL可与数据库程序协同工作,比如MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase以及其他数据库系统。
SQL是面向数据库执行查询,可从数据库取回数据、可在数据库中插入新的记录、可更新数据库中的数据、可从数据库删除记录、可创建新数据库、可在数据库中创建新表、可在数据库中创建存储过程、可在数据库中创建视图以及可以设置表、存储过程和视图的权限。
DBA(Database Administrator,数据库管理员),是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。DBA的核心目标是保证数据库管理系统的稳定性、安全性、完整性和高性能。
DML(Data Manipulation Language,数据操纵语言),用户通过它可以实现对数据库的基本操作,包括增删改查的基本操作。
DDL(Data Definition Language,数据库模式定义语言),用户通过它可以实现对数据库的基本操作,包括数据库结构变更的基本操作。
由于现有技术对数据库的数据不经过审核直接进行操作,会直接影响到整体操作的效率,因此由数据库操作(包括增删改查DML和数据库结构变更DDL)引起的性能风险,对软件可用性和响应效率有非常重要的影响。从现有技术看,当需要对线上数据库进行变更操作时,会带来如下风险:
第一、如果由开发人员登录数据库完成SQL变更,风险较大,可能会影响线上的业务。
第二、由开发人员提出SQL变更需求,然后再由DBA人工审核和执行,这个过程完全依赖于DBA的专业能力和经验且繁琐易出错。
第三、如果是批量执行SQL的话,如果DBA想知道SQL的执行进度则需要登录数据库,查看当前执行的SQL是什么,不够直观。
第四、对DML的SQL变更,一般没有备份老值,一旦出现误操作时需要恢复的时候只能根据误操作的大概时间去分析数据库二进制日志Binlog,非常耗时。
因此,本发明提供一种数据库管理的方法、装置、电子设备及存储介质,用以解决现有技术中人工审核SQL数据存在效率不高容易出错等问题,实现SQL数据自动执行和DMLSQL回滚的功能,并且所述自动执行过程是可控的(比如通过暂停、继续、终止等操作控制SQL的执行),降低了数据库管理的风险。
上述中的回滚(Rollback)指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。回滚包括程序回滚和数据回滚等类型。
下面结合图1-图8描述本发明所述数据库管理的方法、装置、电子设备及存储介质。
图1是本发明提供的数据库管理的方法的流程示意图,如图所示。一种数据库管理的方法,包括:
步骤101,将输入的SQL语句进行解析后生成语法树,得到符合语法的SQL语句。
可选的,本系统对外提供API(Application Programming Interface,应用程序接口),供使用方调用。使用方把数据库实例的信息、数据库账号和要执行的SQL等信息发送过来,本系统收到请求后进入所述步骤101的处理流程。
由于SQL语句的质量对于系统的稳定高效运行有很大影响,因此有必要先对SQL语句的语法进行审核,以确保数据库平稳运行的同时,尽量提高上线的效率。
可选的,比如从SQL语句的SELECT节点开始,利用遍历算法,遍历抽象语法树,对SELECTLIST、FROM、WHERE等描述SQL行为的树节点做信息提取,形成以JSON(JavaScriptObject Notation,JS对象简谱,JSON是一种轻量级的数据交换格式)形式为载体的行为描述,当通过所述语法树检测所述SQL语句的语法正确了,则得到符合语法的SQL语句。图2示出了创建数据表的语法树,如图所示。
步骤102,根据预设审核规则对所述符合语法的SQL语句进行规范审核,得到符合规范的SQL语句。
所述预设审核规则包括业界认可的规则和本发明根据日常SQL上线暴露的一些风险场景而加入的规则,比如是否有创建时间列、是否有表列的注释、update是否带where条件等。
根据所述预设审核规则的审查项目与所述符合语法的SQL语句的对应关系进行匹配审核,当若审核通过后,则得到所述符合规范的SQL语句。
步骤103,对预设数据库实例进行负荷检测,检测通过后执行所述符合规范的SQL语句。
所述预设数据库实例的负荷检测包括比如系统最近一分钟的负载、CPU和磁盘利用率、数据库主从角色的校验以及有无长事务等。
可选的,所述对预设数据库实例进行负荷检测的步骤包括:首先获取所述预设数据库实例的负荷检测值,然后根据所述负荷检测值与预设阈值之间的大小关系确定是否检测通过;当判断出检测通过后,执行所述符合规范的SQL语句。
因此,在对输入的SQL语句通过生成的语法树进行语法检测后,并基于所述预设审核规则对负荷语法的SQL语句进行审核通过后,再对数据库实例的负荷进行检测,检测通过后进入所述符合规范的SQL语句所描述的任务的执行阶段。
随着各种业务应用程序(app)上线,涉及SQL上线数据条数越来越多,而且还会涉及到多个业务线,所以本发明的SQL任务支持多个数据库和多个数据库表。
可选的,SQL语句所描述的任务包括三种:建表(如图2建表的语法树)、改表和增删改数据,每种任务执行时都需要区别对待,比如建表能保证不会锁表,并且需要根据表的索引来建表;改表需要根据数据大小来修改。并且SQL任务不设置在业务高峰期执行;增删改查数据需要在执行前对数据进行备份,以保证数据安全。
图3是本发明提供的SQL任务执行的流程示意图,如图所示。上述所述执行所述符合规范的SQL语句,包括:
步骤301,将作为所述符合规范的SQL语句所描述的任务进入准备状态。
可选的,SQL任务不设置在业务高峰期执行,可调度至业务低峰期执行。
步骤302,若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度。
可选的,由于生成所述任务的执行进度,可便于DBA(数据库管理员)直观地知道SQL的执行进度以及当前执行的任务,从而实现端对端完全管控任务的机制。
步骤303,返回所述任务执行成功的结果。
可选的,本发明还可实现将不符合语法的SQL语句或不符合规范审核的SQL语句的原因反馈给调用者。
图4是本发明提供的预设数据库实例异常的流程示意图,如图所示。所述若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度,包括:
步骤401,所述任务在执行过程中,若所述预设数据库实例发生异常,则根据系统实际情况将所述任务设置为挂起或终止或无效状态。
比如数据库实例的负荷因为外部流程突然徒增,则可以将SQL任务挂起;或者突然发现SQL任务不能现在执行,则可以将SQL任务终止等等。
步骤402,当所述预设数据库实例恢复正常后,将所述任务设置为准备状态以便系统有空闲消费者进程时再次进入执行状态,即进入上述所述步骤302。
上述中,如果所述任务执行顺利,则SQL任务就成功执行完毕,任务进入Done(完成)状态,如果执行过程中发生异常,则任务进入Failed(失败)状态,系统同时会记录当时异常信息,可供以后排除错误。
图5是本发明提供的SQL任务执行过程的流程示意图,如图所示。所述若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度,包括:
步骤501,判断所述任务是否需要进行数据库结构变更DDL操作还是进行增删改数据DML操作。
步骤502,如判断出所述任务需要进行数据库结构变更DDL的操作,则通过执行命令执行数据库结构变更的操作。
步骤503,若判断出所述SQL任务需要进行增删改数据DML的操作,则通过解析数据库的二进制日志并根据执行所述任务的当前线程生成对应的回滚SQL语句。
对需要进行DML操作的SQL任务,通过解析数据库的二进制日志Binlog可精确生成对应的回滚SQL语句,而不像现有技术的实现只能根据开始、结束时间或起止位点生成区间的回滚SQL语句。因为数据库的请求一般都是高并发的,现有技术这种区间的结果是不太好用的。而本发明是根据执行该SQL任务的数据库连接的当前线程thread_id,然后解析二进制日志Binlog找到对应的上下文,生成回滚SQL语句。
由此可知,本发明在执行SQL任务时,如果出现误操作,可通过解析数据库二进制日志生成对应的回滚SQL语句,可以快速恢复误操作前的数据。
图6是本发明提供的任务状态机的流程示意图,如图所示。
步骤一,任务首先进入准备(Ready)就绪状态601。
步骤二,如果有空闲消费者进程(worker),则进入运行(Running)状态602。
步骤三,判断执行过程中是否为正常状态603,数据库实例是否发生异常。如果数据库实例发生异常,则执行步骤四~步骤六;如果系统一切正常,则执行步骤八;如果系统发生异常,导致执行失败的,则执行步骤七。
步骤四~步骤六,如果执行过程中,数据库实例发生异常,则可以根据系统具体的实际情况将任务状态设置为挂起(Paused)状态604、终止(Killed)状态605以及无效(Invalid)状态606。
比如,数据库实例的负荷因为外部流量突然陡增,则可以把SQL任务挂起;或者突然发现SQL任务不能现在执行,则可以把任务终止等。
当上述异常问题解决后,如果任务刚刚被设置为挂起(Paused)状态604,则可以重新设置为准备(Ready)就绪状态601,并在此进入上述步骤一。
步骤七,如果执行过程中发生异常,任务进入失败(Failed)状态607,系统同时记录当时异常信息,供以后排除错误。
步骤八,如果系统执行正常,则SQL任务执行成功,任务进入完成(Done)状态608。
需要说明的是,上述在SQL任务执行过程中,可能会遇到系统的突发异常状态,但如果是遇到对SQL任务的操作指示,比如要进行(1)DDL(数据库结构变更)操作或(2)DML(增改删数据)操作,则执行如下操作:
(1)、对DDL的SQL操作:借助控制工具(如pt工具)减少数据库锁表的操作,减少对线上业务的影响,或根据和开发人员沟通的情况直连数据库执行DDL SQL任务。
Pt(percona-toolkit,简称pt)是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql(关系型数据库管理系统)任务和系统任务。
(2)、对DML的SQL操作:解析数据库二进制日志Binlog,并根据执行该SQL任务时的数据库连接的当前线程thread_id精确生成对应的回滚SQL语句,防止万一误操作,可以快速回滚到操作前的状态。
下面对本发明提供的数据库管理的装置进行描述,下文描述的数据库管理的装置与上文描述的数据库管理的方法可相互对应参照。
图7是本发明提供的数据库管理的装置的示意图,如图所示。一种数据库管理的装置700,包括生成模块701、审核模块702以及执行模块703。
生成模块701,用于将输入的SQL语句进行解析后生成语法树,得到符合语法的SQL语句。
审核模块702,用于根据预设审核规则对所述符合语法的SQL语句进行规范审核,得到符合规范的SQL语句。
执行模块703,用于对预设数据库实例进行负荷检测,检测通过后执行所述符合规范的SQL语句。
可选的,所述生成模块701通过遍历所述语法树,检测所述SQL语句的语法是否正确,若检测为正确的,则得到所述符合语法的SQL语句。
可选的,所述审核模块702根据所述预设审核规则的审查项目与所述符合语法的SQL语句的对应关系进行匹配审核,若审核通过后,则得到所述符合规范的SQL语句。
可选的,所述执行模块703获取所述预设数据库实例的负荷检测值,根据所述负荷检测值与预设阈值之间的大小关系确定是否检测通过,当判断出检测通过后,执行所述符合规范的SQL语句。其中,所述负荷检测包括以下一种或多种组合:CPU和磁盘利用率、数据库主从角色的校验以及有无长事务。
进一步的,所述执行模块703用于执行所述符合规范的SQL语句的步骤,包括:将所述符合规范的SQL语句所描述的任务进入准备状态;若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度;返回所述任务执行成功的结果。
进一步的,所述执行模块703用于执行所述若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度的步骤,包括:所述任务在执行过程中,若所述预设数据库实例发生异常,则根据系统实际情况将所述任务设置为挂起或终止或无效状态;当所述预设数据库实例恢复正常后,将所述任务设置为准备状态以便系统有空闲消费者进程时再次进入执行状态。
进一步的,所述执行模块703用于执行所述若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度的步骤,包括:判断所述任务是否需要进行数据库结构变更的操作;如判断出所述任务需要进行数据库结构变更的操作,则通过执行命令执行数据库结构变更的操作。
进一步的,所述执行模块703用于执行所述若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度的步骤的步骤,包括:判断所述任务是否需要进行增删改数据的操作;若判断出所述任务需要进行增删改数据的操作,则通过解析数据库的二进制日志并根据执行所述任务的当前线程生成对应的回滚SQL语句。
由此可知,本发明所述数据库管理的装置通过生成语法树,可检测收入的SQL语句是否符合语法,再通过预设审查规则可以审核SQL语句是否符合规范,经过两步对SQL语句的自动审核,提高了数据的审核效率,减少了出错的频率。
此外,通过对审核过的SQL语句执行任务时,会生成SQL任务的执行进入,便于DBA直观查看当前执行的SQL任务。而且,在SQL任务执行过程中出现误操作,也可以通过解析数据库二进制日志生成SQL回滚语句,快速恢复误操作时的数据。
图8示例了一种电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行数据库管理的方法,所述方法包括:将输入的SQL语句进行解析后生成语法树,得到符合语法的SQL语句;根据预设审核规则对所述符合语法的SQL语句进行规范审核,得到符合规范的SQL语句;对预设数据库实例进行负荷检测,检测通过后执行所述符合规范的SQL语句。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的数据库管理的方法,所述方法包括:将输入的SQL语句进行解析后生成语法树,得到符合语法的SQL语句;根据预设审核规则对所述符合语法的SQL语句进行规范审核,得到符合规范的SQL语句;对预设数据库实例进行负荷检测,检测通过后执行所述符合规范的SQL语句。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的数据库管理的方法,所述方法包括:将输入的SQL语句进行解析后生成语法树,得到符合语法的SQL语句;根据预设审核规则对所述符合语法的SQL语句进行规范审核,得到符合规范的SQL语句;对预设数据库实例进行负荷检测,检测通过后执行所述符合规范的SQL语句。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种数据库管理的方法,其特征在于,包括:
将输入的SQL语句进行解析后生成语法树,得到符合语法的SQL语句;
根据预设审核规则对所述符合语法的SQL语句进行规范审核,得到符合规范的SQL语句;
对预设数据库实例进行负荷检测,检测通过后执行所述符合规范的SQL语句。
2.根据权利要求1所述的数据库管理的方法,其特征在于,所述根据预设审核规则对所述符合语法的SQL语句进行规范审核,得到符合规范的SQL语句,包括:
根据所述预设审核规则的审查项目与所述符合语法的SQL语句的对应关系进行匹配审核;
若审核通过后,则得到所述符合规范的SQL语句。
3.根据权利要求1所述的数据库管理的方法,其特征在于,所述对预设数据库实例进行负荷检测,检测通过后执行所述符合规范的SQL语句,包括:
获取所述预设数据库实例的负荷检测值;
根据所述负荷检测值与预设阈值之间的大小关系确定是否检测通过;
当判断出检测通过后,执行所述符合规范的SQL语句;
其中,所述负荷检测包括以下一种或多种组合:CPU和磁盘利用率、数据库主从角色的校验以及有无长事务。
4.根据权利要求1所述的数据库管理的方法,其特征在于,所述检测通过后执行所述符合规范的SQL语句,包括:
将所述符合规范的SQL语句所描述的任务进入准备状态;
若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度;
返回所述任务执行成功的结果。
5.根据权利要求4所述的数据库管理的方法,其特征在于,所述若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度,包括:
所述任务在执行过程中,若所述预设数据库实例发生异常,则根据系统实际情况将所述任务设置为挂起或终止或无效状态;
当所述预设数据库实例恢复正常后,将所述任务设置为准备状态以便系统有空闲消费者进程时再次进入执行状态。
6.根据权利要求4所述的数据库管理的方法,其特征在于,所述若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度,包括:
判断所述任务是否需要进行数据库结构变更的操作;
如判断出所述任务需要进行数据库结构变更的操作,则通过执行命令执行数据库结构变更的操作。
7.根据权利要求4所述的数据库管理的方法,其特征在于,所述若系统有空闲消费者进程,则将所述任务进入执行状态并同时生成所述任务的执行进度,包括:
判断所述任务是否需要进行增删改数据的操作;
若判断出所述任务需要进行增删改数据的操作,则通过解析数据库的二进制日志并根据执行所述任务的当前线程生成对应的回滚SQL语句。
8.一种数据库管理的装置,其特征在于,包括:
生成模块,用于将输入的SQL语句进行解析后生成语法树,得到符合语法的SQL语句;
审核模块,用于根据预设审核规则对所述符合语法的SQL语句进行规范审核,得到符合规范的SQL语句;
执行模块,用于对预设数据库实例进行负荷检测,检测通过后执行所述符合规范的SQL语句。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述数据库管理的方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述数据库的管理方法的步骤。
CN202110185229.7A 2021-02-10 数据库管理的方法、装置、电子设备及存储介质 Active CN113722347B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110185229.7A CN113722347B (zh) 2021-02-10 数据库管理的方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110185229.7A CN113722347B (zh) 2021-02-10 数据库管理的方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113722347A true CN113722347A (zh) 2021-11-30
CN113722347B CN113722347B (zh) 2024-07-16

Family

ID=

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023151436A1 (zh) * 2022-02-08 2023-08-17 支付宝(杭州)信息技术有限公司 Sql语句风险检测

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391995A (zh) * 2014-12-15 2015-03-04 北京趣拿软件科技有限公司 一种sql语句审核的方法、数据库运维的方法及系统
US20150254174A1 (en) * 2014-03-04 2015-09-10 International Business Machines Corporation Regression testing of sql execution plans for sql statements
WO2016078423A1 (zh) * 2014-11-17 2016-05-26 中兴通讯股份有限公司 分布式数据库系统的事务处理方法及装置
CN105718474A (zh) * 2014-12-03 2016-06-29 阿里巴巴集团控股有限公司 用于对MySQL数据库的并发操作进行控制的方法及装置
CN108415991A (zh) * 2018-02-12 2018-08-17 广州市贝聊信息科技有限公司 一种sql审核方法与系统
CN109933601A (zh) * 2019-01-24 2019-06-25 深圳壹账通智能科技有限公司 数据库管理方法、系统、计算机装置及可读存储介质
CN111949540A (zh) * 2020-08-14 2020-11-17 中国工商银行股份有限公司 一种代码变更风险估算审核方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150254174A1 (en) * 2014-03-04 2015-09-10 International Business Machines Corporation Regression testing of sql execution plans for sql statements
WO2016078423A1 (zh) * 2014-11-17 2016-05-26 中兴通讯股份有限公司 分布式数据库系统的事务处理方法及装置
CN105718474A (zh) * 2014-12-03 2016-06-29 阿里巴巴集团控股有限公司 用于对MySQL数据库的并发操作进行控制的方法及装置
CN104391995A (zh) * 2014-12-15 2015-03-04 北京趣拿软件科技有限公司 一种sql语句审核的方法、数据库运维的方法及系统
CN108415991A (zh) * 2018-02-12 2018-08-17 广州市贝聊信息科技有限公司 一种sql审核方法与系统
CN109933601A (zh) * 2019-01-24 2019-06-25 深圳壹账通智能科技有限公司 数据库管理方法、系统、计算机装置及可读存储介质
CN111949540A (zh) * 2020-08-14 2020-11-17 中国工商银行股份有限公司 一种代码变更风险估算审核方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
无: "Yearning SQL审核平台", pages 1 - 4, Retrieved from the Internet <URL:https://web.archive.org/web/20201023090358/http://yearning.io/> *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023151436A1 (zh) * 2022-02-08 2023-08-17 支付宝(杭州)信息技术有限公司 Sql语句风险检测

Similar Documents

Publication Publication Date Title
US8954930B2 (en) System and method for reducing test effort by object risk analysis
CN112395325A (zh) 一种数据治理方法、系统、终端设备及存储介质
CN109117314B (zh) 一种防误操作的数据快速恢复方法及系统
CN107153609B (zh) 一种自动化测试方法和装置
CN110674161A (zh) 上线sql的方法、系统、存储介质及sql操作平台
CN114238463A (zh) 一种用于分布式指标计算的计算引擎控制方法和装置
CN113722347B (zh) 数据库管理的方法、装置、电子设备及存储介质
CN113722347A (zh) 数据库管理的方法、装置、电子设备及存储介质
CN109977104B (zh) 数据管理方法及装置
CN116401230A (zh) 一种关系型数据库的变更方法、系统、设备及存储介质
CN111240891A (zh) 基于数据库多表间数据一致性的数据恢复方法及装置
CN115455091A (zh) 数据生成方法、装置、电子设备和存储介质
CN115114284A (zh) 一种表变更处理方法及系统
CN106547756B (zh) 数据库的创建方法及装置
CN111857721B (zh) Sql语句的验证方法、数据获取方法、设备及存储装置
CN115185964A (zh) 数据同步方法、装置、计算机设备及存储介质
CN114281402A (zh) 一种软件版本管理方法及装置
CN110555065A (zh) 一种数据处理方法及装置
CN114489678A (zh) 处理数据库脚本的方法、装置、存储介质和设备
CN114443165A (zh) 一种基于国产cpu和数据库的sql文件检查方法及系统
CN110807037B (zh) 一种数据修改方法、装置、电子设备及存储介质
CN113239064A (zh) 一种数据库更新方法、装置、电子设备及存储介质
CN113886205A (zh) 数据库性能瓶颈定位分析方法、装置、系统及存储介质
CN112463447A (zh) 一种基于分布式数据库实现物理备份的优化方法
CN113076240A (zh) 数据库测试方法、系统、电子设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant after: Jingdong Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant before: Jingdong Digital Technology Holding Co.,Ltd.

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant