CN112925804B - 数据库维护方法和装置 - Google Patents

数据库维护方法和装置 Download PDF

Info

Publication number
CN112925804B
CN112925804B CN202110514695.5A CN202110514695A CN112925804B CN 112925804 B CN112925804 B CN 112925804B CN 202110514695 A CN202110514695 A CN 202110514695A CN 112925804 B CN112925804 B CN 112925804B
Authority
CN
China
Prior art keywords
sql statement
index
database
rewriting
user
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
Application number
CN202110514695.5A
Other languages
English (en)
Other versions
CN112925804A (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.)
Beijing Uxsino Software Co ltd
Original Assignee
Beijing Uxsino Software 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 Beijing Uxsino Software Co ltd filed Critical Beijing Uxsino Software Co ltd
Priority to CN202110514695.5A priority Critical patent/CN112925804B/zh
Publication of CN112925804A publication Critical patent/CN112925804A/zh
Application granted granted Critical
Publication of CN112925804B publication Critical patent/CN112925804B/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
    • 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/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures

Abstract

本公开涉及数据库技术领域,尤其涉及一种数据库维护方法和装置。通过获取数据库中用户使用的SQL语句的调用次数和/或调用时间,根据SQL语句的调用次数和/或调用时间获取低效SQL语句,然后删除低效SQL语句,或者向用户推送与低效SQL语句对应的改写提示信息,能够及时发现并处理低效语句,可以提高数据库的运行效率,且由于不需要技术人员学习数据库承载的业务,因此也可以大大降低数据库运维的难度。

Description

数据库维护方法和装置
技术领域
本公开涉及数据库技术领域,尤其涉及一种数据库维护方法和装置。
背景技术
结构化查询语言(Structured Query Language,SQL),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理数据库系统。现有数据库通常需要专门的运维人员进行维护,用户在定位低效的SQL语句时通常需要花费大量时间对数据库进行监控,且SQL语句的诊断及调优更是需要经验丰富的运维人员花费大量的时间进行分析,容易造成人工成本和时间成本的浪费。
发明内容
为了解决上述技术问题中的至少一个,本公开提供了一种数据库维护方法和装置。
一方面,本公开实施例提供了一种数据库维护方法,对于任一数据库,所述方法包括:
获取所述数据库中用户使用的每条SQL语句的调用次数和/或执行时间;
根据所述SQL语句的调用次数和/或执行时间,获取所述SQL语句中的低效SQL语句;
删除所述低效SQL语句,或者向用户推送与所述低效SQL语句对应的改写提示信息。
可选地,所述低效SQL语句指所述SQL语句中调用次数小于、等于或不大于第一参考阈值的SQL语句,或者执行时间大于、等于或不小于第二参考阈值的SQL语句,或者调用次数小于、等于或不大于第三参考阈值且执行时间大于、等于或不小于第四参考阈值的SQL语句。
可选地,所述数据库中或者与所述数据库连接的设备中设置有改写知识库,所述改写知识库中存储有用于改写低效SQL语句的改写规则;
所述向用户推送与所述低效SQL语句对应的改写提示信息,包括:
获取所述低效SQL语句的低效类型;
根据所述低效SQL语句的低效类型,向用户推送所述改写提示信息,所述改写提示信息包括与所述低效SQL语句的低效类型对应的改写规则。
可选地,所述方法还包括:
在接收到用户的改写指令后,判断所述改写指令与所述改写提示信息是否匹配;
当所述改写指令与所述改写提示信息匹配时,根据所述改写指令或者所述改写提示信息中包括的改写规则改写所述低效SQL语句;
当所述改写指令与所述改写提示信息不匹配时,根据所述改写指令改写所述低效SQL语句,且将所述改写指令作为新的改写规则存储至所述改写知识库。
可选地,所述方法还包括:
判断所述SQL语句查询的列是否存在索引;
当所述列不存在索引时,为所述列建立索引,或者向用户推送索引建立提示信息。
可选地,所述方法包括:
当所述列存在索引时,计算每条所述索引的使用频率;
当所述索引的使用频率小于、等于或不大于第五参考阈值时,删除所述索引,或者向用户推送索引删除提示信息。
可选地,所述方法包括:
当所述列存在索引时,计算每条所述索引的使用频率;
当所述索引的使用频率小于、等于或不大于第五参考阈值时,判断所述索引是否是必要索引,所述必要索引指用户最近建立的索引或者用户最近使用的索引;
当所述索引不是必要索引时,删除所述索引,或者向用户推送索引删除提示信息。
可选地,所述判断所述索引是否是必要索引包括:
获取所述索引的建立时间和/或最近使用时间;
当所述索引的建立时间与当前时间的差值小于、等于或不大于第六参考阈值时,确定所述索引为用户最近建立的索引;
当所述索引的最近使用时间与当前时间的差值小于、等于或不大于第七参考阈值时,确定所述索引为用户最近使用的索引。
可选地,其特征在于,所述方法还包括:
获取所述SQL语句对应的表的查询记录和修改数据;
若所述表存在查询记录且无修改数据,为所述表创建物化视图,或者向用户推送为所述表创建物化视图的提示信息。
可选地,其特征在于,所述方法还包括:
获取所述SQL语句对应的表的查询记录和修改数据;
若所述表存在查询记录且无修改数据,判断所述表是否是新表或弃表;
当所述表不是新表或弃表时,为所述表创建物化视图,或者向用户推送为所述表创建物化视图的提示信息。
可选地,所述判断所述表是否是新表,包括:
获取所述表的创建时间;
当所述表的创建时间距离当前时间的差值小于、等于或不大于第八参考阈值时,确定所述表是新表。
可选地,所述判断所述表是否是弃表,包括:
获取所述表的最近访问时间;
当所述表的最近访问时间距离当前时间的差值大于、等于或不小于第九参考阈值时,确定所述表是弃表。
另一方面,本公开实施例提供了一种数据库维护装置,所述装置应用于任一数据库,所述装置包括:
第一获取模块,被配置为获取所述数据库中用户使用的每条SQL语句的调用次数和/或执行时间;
第二获取模块,被配置为根据所述SQL语句的调用次数和/或执行时间,获取所述SQL语句中的低效SQL语句;
SQL语句删除模块,被配置为删除所述低效SQL语句;或者第一信息推送模块,被配置为向用户推送与所述低效SQL语句对应的改写提示信息。
再一方面,本公平开实施例提供了一种数据库优化装置,所述装置应用于任一数据库,所述装置包括处理器和存储器,所述存储器中存储有适于所述处理器执行的计算机程序指令,所述计算机程序指令被所述处理器运行时执行如上所述的数据库维护方法。
又一方面本公平开实施例提供了一种计算机存储介质,所述计算机存储介质应用于任一数据库,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如上所述的数据库维护方法。
本公开实施例还提供了一种数据库,所述数据库包括如上所述的任一装置,和/或如上所述的计算机存储介质。
本公平开实施例还提供了一种电子设备,所述电子设备包括如上所述的任一装置,如上所述的计算机存储介质和/或如上所述的数据库。
本公开实施例提供的技术方案带来的有益效果至少可以包括:
通过获取数据库中用户使用的SQL语句的调用次数和/或调用时间,根据SQL语句的调用次数和/或调用时间获取低效SQL语句,然后删除低效SQL语句,或者向用户推送与低效SQL语句对应的改写提示信息,能够及时发现并处理低效语句,可以提高数据库的运行效率,且由于不需要技术人员学习数据库承载的业务,因此也可以大大降低数据库运维的难度。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图包括在本说明书中并构成本说明书的一部分,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。为了便于描述,附图中仅示出了与本公开相关的部分。
图1示出了本公开第一实施例提供的数据库维护方法的流程图;
图2示出了本公开第二实施例提供的数据库维护方法的流程图;
图3示出了本公开第三实施例提供的数据库维护方法的流程图;
图4示出了本公开第四实施例提供的数据库维护方法的流程图;
图5示出了本公开第五实施例提供的数据库维护装置的示意图;
图6示出了本公开第六实施例提供的数据库维护装置的示意图;
图7示出了本公开第七实施例提供的数据库维护装置的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例,且在不冲突的情况下,本公开中的实施方式及实施方式中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作或步骤描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作或步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
本公开一些实施例提供的方法可以由处理器执行,且下文均以处理器作为执行主体为例进行说明。其中,执行主体可以根据实际应用进行调整,如执行主体可以为服务器、电子设备、计算机等。更具体的,本公开实施例提供的方法中的一条或多条步骤可以由适于处理器执行的计算机程序指令执行。
在现有技术中,通常一个数据中心或者数据库中存储有成千上万条SQL语句,本领域技术人员在对这些SQL语句进行诊断时需要耗费大量时间。另外,数据库往往承载多种复杂业务,技术人员需要花费大量时间来熟悉数据库承载的业务之后才能对数据库中使用的SQL语句进行优化,给技术人员带来工作上的难度。因此,现在急需一种效率更高的数据库维护方法。
本公开第一实施例提供了一种数据库维护方法,对于任一数据库,如图1所示,该方法包括:
S101,获取数据库中用户使用的每条SQL语句的调用次数和/或执行时间;
S102,根据SQL语句的调用次数和/或执行时间,获取低效SQL语句;
S103,删除低效SQL语句,或者向用户推送与低效SQL语句对应的改写提示信息。
可选地,低效SQL语句指调用次数小于、等于或不大于第一参考阈值的SQL语句,或者执行时间大于、等于或不小于第二参考阈值的SQL语句,或者调用次数小于、等于或不大于第三参考阈值且执行时间大于、等于或不小于第四参考阈值的SQL语句。
可选地,数据库中或者与数据库连接的设备中设置有改写知识库,改写知识库中存储有用于改写低效SQL语句的改写规则;
向用户推送与低效SQL语句对应的改写提示信息,包括:
获取低效SQL语句的低效类型;
根据低效SQL语句的低效类型,向用户推送改写提示信息,改写提示信息包括与低效SQL语句的低效类型对应的改写规则。
可选地,方法还包括:
在接收到用户的改写指令后,判断改写指令与改写提示信息是否匹配;
当改写指令与改写提示信息匹配时,根据改写指令或者改写提示信息中包括的改写规则改写低效SQL语句;
当改写指令与改写提示信息不匹配时,根据改写指令改写低效SQL语句,且将改写指令作为新的改写规则存储至改写知识库。
可选地,方法还包括:
判断SQL语句查询的列是否存在索引;
当列不存在索引时,为列建立索引,或者向用户推送索引建立提示信息。
可选地,方法包括:
当列存在索引时,计算每条索引的使用频率;
当索引的使用频率小于、等于或不大于第五参考阈值时,删除索引,或者向用户推送索引删除提示信息。
可选地,方法包括:
当列存在索引时,计算每条索引的使用频率;
当索引的使用频率小于、等于或不大于第五参考阈值时,判断索引是否是必要索引,必要索引指用户最近建立的索引或者用户最近使用的索引;
当索引不是必要索引时,删除索引,或者向用户推送索引删除提示信息。
可选地,判断索引是否是必要索引包括:
获取索引的建立时间和/或最近使用时间;
当索引的建立时间与当前时间的差值小于、等于或不大于第六参考阈值时,确定索引为用户最近建立的索引;
当索引的最近使用时间与当前时间的差值小于、等于或不大于第七参考阈值时,确定索引为用户最近使用的索引。
可选地,其特征在于,方法还包括:
获取SQL语句对应的表的查询记录和修改数据;
若表存在查询记录且无修改数据,为表创建物化视图,或者向用户推送为表创建物化视图的提示信息。
可选地,其特征在于,方法还包括:
获取SQL语句对应的表的查询记录和修改数据;
若表存在查询记录且无修改数据,判断表是否是新表或弃表;
当表不是新表或弃表时,为表创建物化视图,或者向用户推送为表创建物化视图的提示信息。
可选地,判断表是否是新表,包括:
获取表的创建时间;
当表的创建时间距离当前时间的差值小于、等于或不大于第八参考阈值时,确定表是新表。
可选地,判断表是否是弃表,包括:
获取表的最近访问时间;
当表的最近访问时间距离当前时间的差值大于、等于或不小于第九参考阈值时,确定表是弃表。
本公开实施例提供的方法,通过获取数据库中用户使用的SQL语句的调用次数和/或调用时间,根据SQL语句的调用次数和/或调用时间获取低效SQL语句,然后删除低效SQL语句,或者向用户推送与低效SQL语句对应的改写提示信息,能够及时发现并处理低效语句,可以提高数据库的运行效率,且由于不需要技术人员学习数据库承载的业务,因此也可以大大降低数据库运维的难度。
本公开第二实施例提供了一种数据库维护方法,该方法适用于任一数据库。例如,该方法适用于任一单机数据库或者分布式数据库集群系统中的每个数据库节点。如图2所示,该方法包括:
S201,对于任一数据库,获取数据库中用户使用的SQL语句。
数据库是存储数据的仓库,其本质是一个文件系统。为了方便管理数据库中存储的数据,通常是按照特定的格式将数据存储在数据库中。用户可以对数据库中的数据进行增加、修改、删除及查询操作,且当用户对数据库通过SQL语句执行各种操作时,数据库通常可以实时记录用户使用的SQL语句。在步骤S201中,对于任一数据库,可以根据该数据库的历史记录获取或采集用户在该数据库中使用的SQL语句,或者也可以说是用户在该数据库中使用过的SQL语句。用户在该数据库中使用的SQL语句包括用户对数据库中的数据进行查询操作所使用的SQL语句,且也可以包括用户对数据库中的数据进行增加、修改和/或删除操作所使用的SQL语句。
S202,获取每条SQL语句的调用次数和/或执行时间。
数据库的历史记录中往往记录了SQL语句的调用次数,以及每次调用或执行SQL语句的执行时间。因此,在步骤S201中,在获取用户使用的SQL语句的同时或之后,可以根据数据库的历史记录获取每条SQL语句的调用次数,以及每次调用或执行SQL语句的执行时间。
S203,筛选出获取到的SQL语句中的低效SQL语句。
在获取到每条SQL语句的调用次数和执行时间之后,可以根据获取到的SQL语句的调用次数和/或执行时间获取低效SQL语句。本实施例中的低效SQL语句,可以是SQL语句中调用次数小于、等于或不大于第一参考阈值的SQL语句,或者执行时间大于、等于或不小于第二参考阈值的SQL语句,或者调用次数小于、等于或不大于第三参考阈值且执行时间大于、等于或不小于第四参考阈值的SQL语句。在一种可能的实现方式中,可以在获取到SQL语句的调用次数和执行时间之后,将SQL语句按照调用次数升序或降序排列,或者按照执行时间升序或降序排列,从而可以快速确定低效SQL语句。需要说明的是,第一参考阈值、第二参考阈值、第三参考阈值和第四参考阈值的具体数值可以由用户在本实施例提供的方法执行之前设置,且第一参考阈值和第三参考阈值的数值可以相同或不同,第二参考阈值和第四参考阈值的数值可以相同或不同。例如,第一参考阈值和第三参考阈值的数值均可以为大于0的整数,第二参考阈值和第四参考阈值的数值均可以为大于0的正数,且第二参考阈值和第四参考阈值的单位可以为秒或毫秒等时间单位。
S204,删除低效SQL语句,或者向用户推送与低效SQL语句对应的改写提示信息。
在筛选出低效SQL语句之后,可直接删除低效SQL语句,或者也可以向用户推送针对该低效SQL语句的改写提示信息。为了便于区分,该提示信息可以称为第一提示信息。
在一种可能的实现方式中,有些SQL语句可能是用户最近刚创建的或者最近在使用的SQL语句,且这些SQL语句的调用次数较少或者执行时间较长。因此,为了避免删除用户最近刚创建的或者最近在使用的SQL语句,在删除低效SQL语句或者向用户推送改写提示信息之前,可以判断该低效SQL语句是否是必要SQL语句,必要SQL语句指用户最近创建的SQL语句或者最近使用的SQL语句。举例来说,在获取到低效SQL语句之后,可以获取低效SQL语句的创建时间和最近调用时间。在低效SQL语句的创建时间距离当前时间的差值小于、等于或不大于第十参考阈值时,可以确定该SQL语句为用户最近创建的SQL语句;若低效SQL语句的最近调用时间距离当前时间的差值小于、等于或不大于第十一参考阈值时,可以确定该SQL语句为用户最近使用的SQL语句。在确定该低效SQL语句是必要SQL语句之后,可以判断低效SQL语句的低效类型,例如,判断低效SQL语句是调用次数较少的SQL语句,执行时间较长的SQL语句,还是调用次数较少且执行时间较长的SQL语句。当低效SQL语句是调用次数较少的SQL语句时,可以将该低效SQL语句剔除;当低效SQL语句是执行时间较长的SQL语句时,仍可以向用户推送改写提示信息,以提示用户对该低效SQL语句进行优化。需要说明的是,第十参考阈值和第十一参考阈值的具体数值可以由用户在本实施例提供的方法执行之前设置,且第十参考阈值和第十一参考阈值的数值可以相同或不同。例如,第十参考阈值和第十一参考阈值的数值均可以为大于0的正数,且第十参考阈值和第十一参考阈值可以为分钟、小时或天等时间单位。
在一种可能的实现方式中,对于任一数据库,该数据库中或者与该数据库有线或者无线连接的实体或非实体设备中可以设置有改写知识库,该改写知识库中存储了对低效SQL语句的改写规则。在确定低效SQL语句不是必要SQL语句,或者低效SQL语句是执行时间较长的必要SQL语句时,可以根据低效SQL语句的低效类型,向用户推送相应的改写提示信息,且该改写提示信息可以包括与该低效SQL语句的低效类型对应的改写规则。
例如,对于调用次数较少或执行时间较长的非必要SQL语句,可以向用户推送建议删除该低效SQL语句的改写提示信息。删除该低效SQL语句的建议即为对调用次数较少或执行时间较长的非必要SQL语句的改写规则。另外,对于执行时间较长的低效SQL语句,还可以向用户推送包括建议用户给出具体需要返回的字段值的改写建议,或者包括建议用户写出过滤条件的改写建议的改写提示信息。例如,对于执行时间较长的低效SQL语句,可以判断该低效SQL语句的耗时类型,并根据低效SQL语句的耗时类型向用户推送改写提示信息。
举例来说,当SQL语句中使用了SELECT *时往往会返回不必要的结果而导致SQL语句执行时间变长,且容易加重网络负担从而降低系统性能。因此,对于执行时间较长的SQL语句,可以判断该低效SQL语句中是否包括SELECT *。当低效SQL语句包括SELECT *时,可以向用户推送改写提示信息,且该改写提示信息中可以包括建议用户给出具体需要返回的字段值的改写建议。该改写建议即为当低效SQL语句包括SELECT *时的对该低效SQL语句的改写规则。
再如,当SQL语句的过滤条件关键词前有“%”时,会导致SQL语句走全表查询而导致SQL语句执行时间变长。因此,在获取到低效SQL语句之后,可以判断该低效SQL语句的过滤条件关键词前是否有“%”。当低效SQL语句的过滤条件关键词前有“%”时,为了避免全表查询、避免对NULL值做判断,可以向用户推送改写提示信息,且该改写提示信息中可以包括建议用户写出过滤条件的改写建议。该改写建议即为当低效SQL语句的过滤条件关键词前有“%”时的对该低效SQL语句的改写规则。
在筛选出低效SQL语句之后,对各种类型的低效SQL语句的处理方式可参见表1。
表1 低效SQL语句处理方式
Figure DEST_PATH_IMAGE001
在向用户推送与低效SQL语句对应的改写提示信息之后,本实施例提供的数据库维护方法即可中止或终止,并可以根据用户的指令执行相关的操作。例如,用户可能采纳改写提示信息中的改写建议,并发出用于改写低效SQL语句的改写指令,或者用户可能不采纳改写提示信息中的改写建议,而是采用了其他的改写方式对低效SQL语句进行了改写,或者用户可能未修改低效SQL语句。在一种可能的实现方式中,改写提示信息中可以包括确认修改和确认不修改的选项。当用户选择确认修改的选项时,可以直接根据改写提示信息或者说是根据改写提示信息中的改写规则对低效SQL语句自动在后台修改。当然,用户也可以手动修改低效SQL语句。
在一种可能的实现方式中,在接收到用户对低效SQL语句的改写指令后,可以判断该改写指令与向用户推送的改写提示信息是否匹配,即判断该改写指令与向用户推送的改写提示信息中的改写规则是否匹配。如果该改写指令与向用户推送的改写提示信息匹配,则可以根据用户的改写指令或者根据改写提示信息中包括的改写规则对低效SQL语句进行改写;如果该改写指令与向用户推送的改写提示信息不匹配,则可以仅按照该改写指令改写低效SQL语句,同时或之后将用户的该改写指令作为新的改写规则存储至改写知识库。例如,当用户选择确认修改的选项时,可以确认用户的改写指令与改写提示信息匹配;或者,当用户手动输入对低效SQL语句的具体改写指令时,可以判断用户输入的改写指令是否与低效SQL语句的低效类型对应的改写规则相匹配。当将用户的改写指令作为新的改写规则存储至改写知识库中时,可以删除改写知识库中与该低效SQL语句的低效类型对应的旧的改写规则,或者也可以将新、旧改写规则共同存储。当改写知识库中同时存储有新、旧或其他两种以上的改写规则时,在向用户推送低效SQL语句的改写提示信息时,可以向用户推送包括多种改写规则的改写提示信息,且可以以可选方式向用户推送包括多种改写规则的改写提示信息。
在实践中,在数据库中使用的每条SQL语句通常都有对应的要查询的表,且每条SQL语句通常都有对应的要查询的列。因此,为了提高系统运行效率,在获取到SQL语句之后,还可以对SQL语句查询的列进行优化。在一种可能的实现方式中,可以根据SQL语句中的谓词查询该SQL语句是对表的那个或哪些列进行了查询,然后可以判断该列是否存在索引。当列不存在索引时,表明用户没有为列建立索引,此时可以直接为列建立索引,或者向用户推送索引建立提示信息,该提示信息中可以包括用于建立索引的SQL语句。为了便于区别,该索引建立提示信息可以称为第二提示信息。在向用户推送索引建立提示信息之后,可以根据用户的指令为列建立索引。例如,索引建立提示信息中可以包括用于建立索引的SQL语句,且索引建立提示信息中也可以单独或同时包括确认建立索引和不建立索引的选项。当用户选择确认建立索引的选项后,可以直接为列建立索引;或者,用户也可以手动根据索引建立提示信息或根据索引建立提示信息中包括的用于建立索引的SQL语句为列建立索引。通过为未建立索引的列建立索引,可以提高数据查询效率。
当列存在索引时,可以计算每条索引的使用频率或者使用次数。当索引的使用频率小于、等于或不大于第五参考阈值时,可以直接删除该索引,或者向用户推送索引删除提示信息。为了便于区别,该提示信息可以称为第三提示信息。在向用户推送索引删除提示信息之后,可以根据用户的删除指令删除该索引。需要说明的是,第五参考阈值的具体数值可以由用户在本实施例提供的方法执行之前设置。例如,第五参考阈值的数值可以为大于等于0的整数。
在一种可能的实现方式中,索引可能是用户最近刚建立或最近在使用的。为了避免删除用户最近刚建立或使用的索引,在确定索引的使用频率小于、等于或不大于第五参考阈值之后,可以判断该索引是否是必要索引,该必要索引指用户最近建立的索引或者用户最近使用的索引。举例来说,当确定索引的使用频率小于、等于或不大于第五参考阈值时,获取或查询该索引的建立时间和/或最近使用时间。当该索引的建立时间与当前时间的差值小于、等于或不大于第六参考阈值时,可以确定该索引为用户最近建立的索引;当该索引的最近使用时间与当前时间的差值小于、等于或不大于第七参考阈值时,可以确定该索引为用户最近使用的索引。当确定索引为用户最近创建或使用的索引时,即确定索引是必要索引时,即便该索引的使用频率小于、等于或不大于第五参考阈值,也不会删除该索引或者向用户推送索引删除提示信息。而当该索引不是必要索引时,可以删除该索引,或者向用户推送索引删除提示信息。需要说明的是,第六参考阈值和第七参考阈值的具体数值可以由用户在本实施例提供的方法执行之前设置。例如,第六参考阈值和第七参考阈值的数值均可以为大于0的正数,单位可以为秒、分钟、小时、天、周、月和年等时间单位。第六参考阈值和第七参考阈值的数值和单位均可以相等或不等。
在一种可能的实现方式中,在获取到SQL语句之后,可以根据日志文件或者历史记录获取SQL语句对应的表的查询记录和修改数据。表的查询记录可以反映表被查询的时间和频率,当表存在查询记录时,可以表明该表曾被查询过。表的修改数据可以包括对表中数据的增加、删除和/或修改等的历史记录。当SQL语句对应的表存在查询记录且无修改数据时,可以确定该表的稳定性较高且存在一定的使用频率,因此可以为该表创建物化视图,或者向用户推送为该表创建物化视图的提示信息,然后可以根据用户的指令为该表创建物化视图。为了便于区别,该提示信息可以称为第四提示信息。通过为稳定性较高的表创建物化视图,可以提高数据的查询效率。
在一种可能实现方式中,在获取到表的查询记录后,可以判断该表是否是用户最近建立的新表或者是长时间未查询也未修改过的弃表。例如,可以根据日志文件或历史记录获取表的创建时间和/或访问时间,当表的创建时间距离当前时间的差值小于、等于或不大于第八参考阈值时,可以确定该表是用户最近创建的新表;当表的最近访问时间距离当前时间的差值大于、等于或不小于第九参考阈值时,可以确定该表是长时间未用过的弃表。由于物化视图的创建会增加表的存储空间,所以对于稳定性较低的新表以及长时间不用的弃表可以不为其创建物化视图。需要说明的是,第八参考阈值和第九参考阈值的具体数值可以由用户在本实施例提供的方法执行之前设置。例如,第八参考阈值和第九参考阈值的数值均可以为大于0的正数,单位可以为秒、分钟、小时、天、周、月和年等时间单位。第八参考阈值和第九参考阈值的数值和单位均可以相等或不等。
需要说明的是,本实施例中记载的各种参考阈值的取值范围在理论上均是可行的,但在具体实践时,本领域技术人员应该根据实际需求合理地设置各参考阈值的数值。
本实施例提供的数据库维护方法可以不定期或者周期性地自动执行,或者也可以根据用户的指令开始执行。例如,当用户认为需要对数据库进行维护时,可以向数据库发送执行该数据库维护方法的指令,从而开始对数据库中的SQL语句及表进行诊断及优化。
本实施例提供的数据库维护方法,通过获取数据库中用户使用的SQL语句的调用次数和/或调用时间,根据SQL语句的调用次数和/或调用时间获取低效SQL语句,然后删除低效SQL语句,或者向用户推送与低效SQL语句对应的改写提示信息,能够及时发现并处理低效语句,可以提高数据库的运行效率,且由于不需要技术人员学习数据库承载的业务,因此也可以大大降低数据库运维的难度。通过为未建立索引的列建立索引或者提示用户为未建立索引的列建立索引,以及为稳定性较高的表创建物化视图,可以提高数据库中数据的查询效率。
本公开第三实施例提供了一种数据库维护方法,该方法适用于任一数据库。例如,该方法适用于任一单机数据库或者分布式数据库集群系统中的每个数据库节点。如图3所示,该方法包括:
S301,对于任一数据库,获取数据库中用户使用的SQL语句。
S302,判断各SQL语句查询的列是否存在索引。
S303,当列不存在索引时,为列建立索引,或者向用户推送索引建立提示信息。
可选地,当列存在索引时,计算每条索引的使用频率。当该索引的使用频率小于、等于或不大于第五参考阈值时,删除索引,或者向用户推送索引删除提示信息。或者,当该索引的使用频率小于、等于或不大于第五参考阈值时,判断索引是否是必要索引,必要索引指用户最近建立的索引或者用户最近使用的索引,当该索引不是必要索引时,删除索引,或者向用户推送索引删除提示信息。
例如,可以获取索引的建立时间和/或最近使用时间;
当索引的建立时间与当前时间的差值小于、等于或不大于第六参考阈值时,确定索引为用户最近建立的索引;
当索引的最近使用时间与当前时间的差值小于、等于或不大于第七参考阈值时,确定索引为用户最近使用的索引。
本实施例提供的数据库维护方法与上述实施例提供的数据库维护方法中对数据库中数据列的优化方法相同或类似,此处不再赘述。
通过为未建立索引的列建立索引,或者向用户推送索引建立提示信息,并根据用户的指令为列建立索引,可以提高数据查询效率。在列存在索引时,可以根据索引的使用频率删除不常用索引,可以节省存储空间。
本公开第四实施例提供了一种数据库维护方法,该方法适用于任一数据库。例如,该方法适用于任一单机数据库或者分布式数据库集群系统中的每个数据库节点。如图4所示,该方法包括:
S401,对于任一数据库,获取数据库中用户使用的SQL语句。
S402,获取各SQL语句对应的表的查询记录和修改数据。
S403,若表存在查询记录且无修改数据,为表创建物化视图,或者向用户推送为表创建物化视图的提示信息;或者,判断表是否是新表或弃表,当表不是新表或弃表时,为表创建物化视图,或者向用户推送为表创建物化视图的提示信息。
可选地,可以获取表的创建时间和最近访问时间,当表的创建时间距离当前时间的差值小于、等于或不大于八参考阈值时,可以确定表是新表;当表的最近访问时间距离当前时间的差值大于、等于或不小于第九参考阈值时,确定表是弃表。
本实施例提供的数据库维护方法与上述实施例提供的数据库维护方法中对数据库中数据表的优化方法相同或类似,此处不再赘述。
通过为稳定性较好的表创建物化视图,或者向用户推送为表创建物化视图的提示信息,并根据用户指令为稳定性较好的表创建物化视图,可以提高数据库的运维效率。通过判断表是否是新表或弃表,并在表是新表或弃表时放弃为表创建物化视图,可以避免对稳定性不高的表或者长时间未使用的表创建物化视图,避免了存储空间的浪费。
本公开第五实施例提供了一种数据库维护装置,该装置可以应用于任一数据库,例如可以应用于任一单机数据库或者分布式数据库集群系统中的每个数据库节点。如图5所示,该装置包括:
第一获取模块,被配置为获取数据库中用户使用的每条SQL语句的调用次数和/或执行时间;
第二获取模块,被配置为根据SQL语句的调用次数和/或执行时间,获取低效SQL语句;
SQL语句删除模块,被配置为删除低效SQL语句;或者第一信息推送模块,被配置为向用户推送与低效SQL语句对应的改写提示信息。
可选地,低效SQL语句指调用次数小于、等于或不大于第一参考阈值的SQL语句,或者执行时间大于、等于或不小于第二参考阈值的SQL语句,或者调用次数小于、等于或不大于第三参考阈值且执行时间大于、等于或不小于第四参考阈值的SQL语句。
可选地,该装置所应用的数据库中或者与该装置所应用的数据库连接的设备中设置有改写知识库,该改写知识库中存储有用于改写低效SQL语句的改写规则。
可选地,该装置包括第三获取模块,被配置为获取低效SQL语句的低效类型;第一信息推送模块可以被配置为根据低效SQL语句的低效类型,向用户推送改写提示信息,改写提示信息包括与低效SQL语句的低效类型对应的改写规则。
可选地,该装置还包括第一判断模块,改写模块和存储模块。
第一判断模块可以被配置为在接收到用户的改写指令后,判断改写指令与改写提示信息是否匹配;
改写模块可以被配置为当改写指令与改写提示信息匹配时,根据改写指令或者改写提示信息中包括的改写规则改写低效SQL语句;
改写模块还可以被配置为当改写指令与改写提示信息不匹配时,根据改写指令改写低效SQL语句;
存储模块可以被配置为当改写指令与改写提示信息不匹配时,将改写指令作为新的改写规则存储至改写知识库。
可选地,该装置还可以包括第二判断模块、索引建立模块、第二信息推送模块、第一计算模块、索引删除模块和第三信息推送模块。
第二判断模块可以被配置为判断SQL语句查询的列是否存在索引;
索引建立模块可以被配置为当列不存在索引时,为列建立索引;
第二信息推送模块可以被配置为当列不存在索引时,向用户推送索引建立提示信息;
第一计算模块可以被配置为当列存在索引时,计算每条索引的使用频率;
索引删除模块可以被配置为当索引的使用频率小于、等于或不大于第五参考阈值时,删除索引;
第三信息推送模块可以被配置为当索引的使用频率小于、等于或不大于第五参考阈值时,向用户推送索引删除提示信息。
可选地,该装置还包括第三判断模块。
第三判断模块可以被配置为当索引的使用频率小于、等于或不大于第二参考阈值时,判断索引是否是必要索引,必要索引指用户最近建立的索引或者用户最近使用的索引;
索引删除模块还可以被配置为当索引不是必要索引时,删除索引;
第三信息推送模块还可以被配置为当索引不是必要索引时,向用户推送索引删除提示信息。
可选地,第三判断模块包括第一获取子模块、第一确定子模块和第二确定子模块。
第一获取子模块可以被配置为获取索引的建立时间和/或最近使用时间;
第一确定子模块可以被配置为当索引的建立时间与当前时间的差值小于、等于或不大于第六参考阈值时,确定索引为用户最近建立的索引;
第二确定子模块可以被配置为当索引的最近使用时间与当前时间的差值小于、等于或不大于第七参考阈值时,确定索引为用户最近使用的索引。
可选地,该装置还可以包括第四获取模块、物化视图创建模块和第四信息推送模块。
第四获取模块可以被配置为获取SQL语句对应的表的查询记录和修改数据;
物化视图创建模块可以被配置为在表存在查询记录且无修改数据时,为表创建物化视图;
第四信息推送模块可以被配置为在表存在查询记录且无修改数据时,向用户推送为表创建物化视图的提示信息。
可选地,该装置还可以包括第四判断模块。
第四判断模块可以被配置为在表存在查询记录且无修改数据时,判断表是否是新表或弃表。
物化视图创建模块还可以被配置为当表不是新表或弃表时,为表创建物化视图;
第四信息推送模块还可以被配置为当表不是新表或弃表时,向用户推送为表创建物化视图的提示信息。
可选地,第四判断模块可以包括第二获取子模块、第三获取子模块、第三确定子模块和第四确定子模块。
第二获取子模块可以被配置为获取表的创建时间;
第三确定子模块可以被配置为当表的创建时间距离当前时间的差值小于、等于或不大于第八参考阈值时,确定表是新表。
第三获取子模块可以被配置为获取表的最近访问时间;
第四确定子模块可以被配置为当表的最近访问时间距离当前时间的差值大于、等于或不小于第九参考阈值时,确定表是弃表。
本实施例提供的数据库维护装置,通过获取数据库中用户使用的SQL语句的调用次数和/或调用时间,根据SQL语句的调用次数和/或调用时间获取低效SQL语句,然后删除低效SQL语句,或者向用户推送与低效SQL语句对应的改写提示信息,能够及时发现并处理低效语句,可以提高数据库的运行效率,且由于不需要技术人员学习数据库承载的业务,因此也可以大大降低数据库运维的难度。通过为未建立索引的列建立索引或者提示用户为未建立索引的列建立索引,以及为稳定性较高的表创建物化视图,可以提高数据库中数据的查询效率。
本公开第六实施例提供了一种数据库维护装置,该装置可以应用于任一数据库,例如可以应用于任一单机数据库或者分布式数据库集群系统中的每个数据库节点。如图6所示,该装置包括:
第五获取模块,被配置为对于任一数据库,获取数据库中用户使用的SQL语句;
第二判断模块,被配置为判断各SQL语句查询的列是否存在索引;
索引建立模块,被配置为当列不存在索引时,为列建立索引;或者,第二信息推送模块,被配置为当列不存在索引时,向用户推送索引建立提示信息。
可选地,该装置还包括:
第一计算模块,被配置为当列存在索引时,计算每条索引的使用频率。
索引删除模块,被配置为当索引的使用频率小于、等于或不大于第五参考阈值时,删除索引;
第三信息推送模块,被配置为当索引的使用频率小于、等于或不大于第五参考阈值时,向用户推送索引删除提示信息。
可选地,该装置还包括第三判断模块。
第三判断模块可以被配置为当索引的使用频率小于、等于或不大于第五参考阈值时,判断索引是否是必要索引,必要索引指用户最近建立的索引或者用户最近使用的索引;
索引删除模块还可以被配置为当索引不是必要索引时,删除索引;
第三信息推送模块还可以被配置为当索引不是必要索引时,向用户推送索引删除提示信息。
可选地,第三判断模块包括第一获取子模块、第一确定子模块和第二确定子模块。
第一获取子模块可以被配置为获取索引的建立时间和/或最近使用时间;
第一确定子模块可以被配置为当索引的建立时间与当前时间的差值小于、等于或不大于第六参考阈值时,确定索引为用户最近建立的索引;
第二确定子模块可以被配置为当索引的最近使用时间与当前时间的差值小于、等于或不大于第七参考阈值时,确定索引为用户最近使用的索引。
通过为未建立索引的列建立索引,或者向用户推送索引建立提示信息,并根据用户的指令为列建立索引,可以提高数据查询效率。在列存在索引时,可以根据索引的使用频率删除不常用索引,可以节省存储空间。
本公开第七实施例提供了一种数据库维护装置,该装置可以应用于任一数据库,例如可以应用于任一单机数据库或者分布式数据库集群系统中的每个数据库节点。如图7所示,该装置包括:
第五获取模块,被配置为对于任一数据库,获取数据库中用户使用的SQL语句;
第四获取模块,被配置为获取各SQL语句对应的表的查询记录和修改数据;
物化视图创建模块,被配置为在表存在查询记录且无修改数据时,为表创建物化视图;或者,第四信息推送模块,被配置为在表存在查询记录且无修改数据时,向用户推送为表创建物化视图的提示信息。
可选地,该装置还可以包括第四判断模块。
第四判断模块可以被配置为在表存在查询记录且无修改数据时,判断表是否是新表或弃表。
物化视图创建模块还可以被配置为当表不是新表或弃表时,为表创建物化视图;
第四信息推送模块还可以被配置为当表不是新表或弃表时,向用户推送为表创建物化视图的提示信息。
可选地,第四判断模块可以包括第二获取子模块、第三获取子模块、第三确定子模块和第四确定子模块。
第二获取子模块可以被配置为获取表的创建时间;
第三确定子模块可以被配置为当表的创建时间距离当前时间的差值小于、等于或不大于第八参考阈值时,确定表是新表。
第三获取子模块可以被配置为获取表的最近访问时间;
第四确定子模块可以被配置为当表的最近访问时间距离当前时间的差值大于、等于或不小于第九参考阈值时,确定表是弃表。
通过为稳定性较好的表创建物化视图,或者向用户推送为表创建物化视图的提示信息,并根据用户指令为稳定性较好的表创建物化视图,可以提高数据库的运维效率。通过判断表是否是新表或弃表,并在表是新表或弃表时放弃为表创建物化视图,可以避免对稳定性不高的表或者长时间未使用的表创建物化视图,避免了存储空间的浪费。
本公开第八实施例提供了一种数据库优化装置,该装置包括处理器和存储器。其中,存储器中存储有适于处理器执行的计算机程序指令。当该计算机程序指令被处理器运行时,处理器执行上述任一实施例提供的数据库维护方法。
需要说明的是,上述实施例中提供的数据库维护装置在用来维护数据库时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构或程序划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据库维护装置与数据库维护方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本公开第九实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机可执行指令。当该计算机可执行指令被处理器执行时实现上述任一实施例提供的数据库维护方法。例如,当该计算机程序指令被处理器运行时,实现第一实施例提供的数据库维护方法。
本实施例提供的计算机存储介质可以为计算机可读存储介质。计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本公开第十实施例提供了一种数据库,该数据库包括上述任一实施例所述的数据库维护装置和/或计算机存储介质。上述实施例中提供的数据库维护装置和计算机存储介质均可以以计算机代码、计算机程序和/或计算机函数等形式嵌入到数据库系统中。
本公开第十一实施例提供了一种电子设备,该电子设备包括上述任一实施例所述的数据库维护装置、计算机存储介质和/或上述实施例提供的数据库。例如,该电子设备可以是手机、电脑、平板电脑、服务器、网络设备等,或者也可以是U盘、移动硬盘、只读存储器(ROM,Read OnlyMemory)、磁碟或者光盘等,且该电子设备可以装载有上述实施例提供的数据库。
举例来说,该电子设备可以包括:处理器、存储器、输入/输出接口、通信接口和总线。其中处理器、存储器、输入/输出接口和通信接口通过总线实现彼此之间在设备内部的通信连接。
处理器可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器可以采用ROM(Read Only Memory,只读存储器)、RAM(RandomAccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器中,并由处理器来调用执行。
输入/输出接口用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中,也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口用于连接通信模块,以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线包括一通路,在设备的各个组件(例如处理器、存储器、输入/输出接口和通信接口)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器、存储器、输入/输出接口、通信接口以及总线,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含全部所述组件。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
在本说明书的描述中,参考术语“一个实施例/方式”、“一些实施例/方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例/方式或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例/方式或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例/方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例/方式或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例/方式或示例以及不同实施例/方式或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
本领域的技术人员应当理解,上述实施方式仅仅是为了清楚地说明本公开,而并非是对本公开的范围进行限定。对于所属领域的技术人员而言,在上述公开的基础上还可以做出其它变化或变型,并且这些变化或变型仍处于本公开的范围内。

Claims (16)

1.一种数据库维护方法,其特征在于,对于任一数据库,所述方法包括:
获取所述数据库中用户使用的每条SQL语句的调用次数,或者获取所述数据库中用户使用的每条SQL语句的调用次数和执行时间;
当获取所述数据库中用户使用的每条SQL语句的调用次数时,根据所述SQL语句的调用次数,获取所述SQL语句中的低效SQL语句,所述低效SQL语句指所述SQL语句中调用次数小于、等于或不大于第一参考阈值的SQL语句;
当获取所述数据库中用户使用的每条SQL语句的调用次数和执行时间时,根据所述SQL语句的调用次数和执行时间,获取所述SQL语句中的低效SQL语句,所述低效SQL语句指所述SQL语句中调用次数小于、等于或不大于第三参考阈值且执行时间大于、等于或不小于第四参考阈值的SQL语句;
删除所述低效SQL语句,或者向用户推送与所述低效SQL语句对应的改写提示信息。
2.根据权利要求1所述的数据库维护方法,其特征在于,所述数据库中或者与所述数据库连接的设备中设置有改写知识库,所述改写知识库中存储有用于改写低效SQL语句的改写规则;
所述向用户推送与所述低效SQL语句对应的改写提示信息,包括:
获取所述低效SQL语句的低效类型;
根据所述低效SQL语句的低效类型,向用户推送所述改写提示信息,所述改写提示信息包括与所述低效SQL语句的低效类型对应的改写规则。
3.根据权利要求2所述的数据库维护方法,其特征在于,所述方法还包括:
在接收到用户的改写指令后,判断所述改写指令与所述改写提示信息是否匹配;
当所述改写指令与所述改写提示信息匹配时,根据所述改写指令或者所述改写提示信息中包括的改写规则改写所述低效SQL语句;
当所述改写指令与所述改写提示信息不匹配时,根据所述改写指令改写所述低效SQL语句,且将所述改写指令作为新的改写规则存储至所述改写知识库。
4.根据权利要求1-3任一所述的数据库维护方法,其特征在于,所述方法还包括:
判断所述SQL语句查询的列是否存在索引;
当所述列不存在索引时,为所述列建立索引,或者向用户推送索引建立提示信息。
5.根据权利要求4所述的数据库维护方法,其特征在于,所述方法包括:
当所述列存在索引时,计算每条所述索引的使用频率;
当所述索引的使用频率小于、等于或不大于第五参考阈值时,删除所述索引,或者向用户推送索引删除提示信息。
6.根据权利要求4所述的数据库维护方法,其特征在于,所述方法包括:
当所述列存在索引时,计算每条所述索引的使用频率;
当所述索引的使用频率小于、等于或不大于第五参考阈值时,判断所述索引是否是必要索引,所述必要索引指用户最近建立的索引或者用户最近使用的索引;
当所述索引不是必要索引时,删除所述索引,或者向用户推送索引删除提示信息。
7.根据权利要求6所述的数据库维护方法,其特征在于,所述判断所述索引是否是必要索引包括:
获取所述索引的建立时间和/或最近使用时间;
当所述索引的建立时间与当前时间的差值小于、等于或不大于第六参考阈值时,确定所述索引为用户最近建立的索引;
当所述索引的最近使用时间与当前时间的差值小于、等于或不大于第七参考阈值时,确定所述索引为用户最近使用的索引。
8.根据权利要求1-3任一所述的数据库维护方法,其特征在于,所述方法还包括:
获取所述SQL语句对应的表的查询记录和修改数据;
若所述表存在查询记录且无修改数据,为所述表创建物化视图,或者向用户推送为所述表创建物化视图的提示信息。
9.根据权利要求1-3任一所述的数据库维护方法,其特征在于,所述方法还包括:
获取所述SQL语句对应的表的查询记录和修改数据;
若所述表存在查询记录且无修改数据,判断所述表是否是新表或弃表;
当所述表不是新表或弃表时,为所述表创建物化视图,或者向用户推送为所述表创建物化视图的提示信息。
10.根据权利要求9所述的数据库维护方法,其特征在于,所述判断所述表是否是新表,包括:
获取所述表的创建时间;
当所述表的创建时间距离当前时间的差值小于、等于或不大于第八参考阈值时,确定所述表是新表。
11.根据权利要求9所述的数据库维护方法,其特征在于,所述判断所述表是否是弃表,包括:
获取所述表的最近访问时间;
当所述表的最近访问时间距离当前时间的差值大于、等于或不小于第九参考阈值时,确定所述表是弃表。
12.一种数据库维护装置,其特征在于,所述装置应用于任一数据库,所述装置包括:
第一获取模块,被配置为获取所述数据库中用户使用的每条SQL语句的调用次数,或者获取所述数据库中用户使用的每条SQL语句的调用次数和执行时间;
第二获取模块,被配置为当所述第一获取模块获取的是所述数据库中用户使用的每条SQL语句的调用次数时,根据所述SQL语句的调用次数,获取所述SQL语句中的低效SQL语句,所述低效SQL语句指所述SQL语句中调用次数小于、等于或不大于第一参考阈值的SQL语句;
所述第二获取模块,还被配置为当所述第一获取模块获取的是所述数据库中用户使用的每条SQL语句的调用次数和执行时间时,根据所述SQL语句的调用次数和执行时间,获取所述SQL语句中的低效SQL语句,所述低效SQL语句指所述SQL语句中调用次数小于、等于或不大于第三参考阈值且执行时间大于、等于或不小于第四参考阈值的SQL语句;
SQL语句删除模块,被配置为删除所述低效SQL语句;或者第一信息推送模块,被配置为向用户推送与所述低效SQL语句对应的改写提示信息。
13.一种数据库优化装置,其特征在于,所述装置应用于任一数据库,所述装置包括处理器和存储器,所述存储器中存储有适于所述处理器执行的计算机程序指令,所述计算机程序指令被所述处理器运行时执行如权利要求1~11中任一项所述的数据库维护方法。
14.一种计算机存储介质,其特征在于,所述计算机存储介质应用于任一数据库,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现权利要求1~11任一项所述的数据库维护方法。
15.一种数据库,其特征在于,所述数据库包括如权利要求12所述的装置,如权利要求13所述的装置,和/或如权利要求14所述的计算机存储介质。
16.一种电子设备,其特征在于,所述电子设备包括如权利要求12所述的装置,如权利要求13所述的装置,如权利要求14所述的计算机存储介质和/或如权利要求15所述的数据库。
CN202110514695.5A 2021-05-12 2021-05-12 数据库维护方法和装置 Active CN112925804B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110514695.5A CN112925804B (zh) 2021-05-12 2021-05-12 数据库维护方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110514695.5A CN112925804B (zh) 2021-05-12 2021-05-12 数据库维护方法和装置

Publications (2)

Publication Number Publication Date
CN112925804A CN112925804A (zh) 2021-06-08
CN112925804B true CN112925804B (zh) 2021-08-03

Family

ID=76174849

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110514695.5A Active CN112925804B (zh) 2021-05-12 2021-05-12 数据库维护方法和装置

Country Status (1)

Country Link
CN (1) CN112925804B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115510272B (zh) * 2022-09-20 2023-07-14 广州金狐智能科技有限公司 一种基于大数据分析的计算机数据处理系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001093041A2 (en) * 2000-06-01 2001-12-06 Samadhi Information Technologies Ltd. System for monitoring and analyzing resource utilization in a computer network

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100543746C (zh) * 2007-03-16 2009-09-23 华为技术有限公司 一种实现数据库系统自动优化的系统和方法
CN107609028B (zh) * 2017-08-09 2021-10-15 山东中创软件商用中间件股份有限公司 一种低效率sql语句的确定方法及装置
CN108595721A (zh) * 2018-08-01 2018-09-28 四川长虹电器股份有限公司 一种sql优化系统及自动化sql优化方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001093041A2 (en) * 2000-06-01 2001-12-06 Samadhi Information Technologies Ltd. System for monitoring and analyzing resource utilization in a computer network

Also Published As

Publication number Publication date
CN112925804A (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
US10042746B2 (en) Callpath finder
CN110704398A (zh) 从MySQL到Oracle的数据库迁移方法、装置及计算机设备
CN110795455B (zh) 依赖关系解析方法、电子装置、计算机设备及可读存储介质
CN107391744B (zh) 数据存储、读取方法、装置及其设备
CN109344153B (zh) 业务数据的处理方法及终端设备
CN106031127B (zh) 用于应用的管理的方法和装置
CN107179930B (zh) 一种应用卸载推荐方法及装置
CN111506579B (zh) 一种智能合约代码的生成方法、程序及设备
CN112925804B (zh) 数据库维护方法和装置
CN109359141B (zh) 一种可视化报表数据展示方法及装置
CN112632136A (zh) 一种数据统计分析方法、装置、电子设备及存储介质
CN112988786B (zh) 数据库维护方法和装置
US11204933B2 (en) Data manipulation record storage method, system, apparatus, and device
CN114860362A (zh) 界面的更新方法及装置
CN116841794A (zh) 一种数据的校验方法、装置以及存储介质
CN110866003B (zh) 索引值数目的估算方法和装置以及电子设备
CN110333883B (zh) 一种更新持久化数据的方法及装置
CN115495911B (zh) 模型重命名的方法、设备及存储介质
CN111752956B (zh) 实体的关联变更方法及装置、电子设备
CN111061721B (zh) 数据处理方法及装置
CN107729013B (zh) 管理网页上操作按钮的方法和计算机可读存储介质
CN116149945A (zh) 数据库统计信息的收集方法、存储介质及设备
CN116501746A (zh) 数据字典的更新方法、装置、电子设备和存储介质
CN117492826A (zh) 确定产品变更情况的方法、处理器及存储介质
CN115495276A (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