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

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

Info

Publication number
CN111324604A
CN111324604A CN202010060164.9A CN202010060164A CN111324604A CN 111324604 A CN111324604 A CN 111324604A CN 202010060164 A CN202010060164 A CN 202010060164A CN 111324604 A CN111324604 A CN 111324604A
Authority
CN
China
Prior art keywords
database table
sql
data
target database
implementation manner
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
Application number
CN202010060164.9A
Other languages
English (en)
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.)
Rajax Network Technology Co Ltd
Original Assignee
Rajax Network Technology 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 Rajax Network Technology Co Ltd filed Critical Rajax Network Technology Co Ltd
Priority to CN202010060164.9A priority Critical patent/CN111324604A/zh
Publication of CN111324604A publication Critical patent/CN111324604A/zh
Pending legal-status Critical Current

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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation

Landscapes

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

Abstract

本公开实施例公开了一种数据库表的处理方法、装置、电子设备及存储介质。该方法包括:获取日志数据;根据所述日志数据获取所述目标数据库表对应的SQL统计数据;所述SQL统计数据包括访问所述目标数据库的SQL语句在预设维度上的统计数据;根据所述SQL统计数据确定所述目标数据表的热点分布信息;其中,所述热点分布信息包括所述目标数据库表是否为热点数据库表和/或所述目标数据库表中的数据记录是否为热点数据记录。通过本公开实施例从表和数据记录两个层面反映数据库表的热点情况,进而能够根据该热点情况评估数据库表的使用是否合理,解决了相关技术中从SQL语句的性能出发无法评估数据库表的使用是否合理的问题。

Description

数据库表的处理方法、装置、电子设备及存储介质
技术领域
本公开涉及计算机技术领域,具体涉及一种数据库表的处理方法、装置、电子设备及存储介质。
背景技术
随着互联网的飞速发展,用户对产生了大量的数据。越来越多的商家使用互联网平台为用户提供服务。用户数量和数据种类的不断增长都对互联网平台的支持数据库提出了更高的要求。数据库系统的性能会直接影响到互联网平台的响应速度。因此,提高数据库系统的性能也是互联网平台亟需解决的问题之一。
发明内容
本公开实施例提供一种数据库表的处理方法、装置、电子设备及存储介质。
第一方面,本公开实施例中提供了一种数据库表的处理方法,包括:获取日志数据;根据所述日志数据获取所述目标数据库表对应的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语句进行统计;第二统计子模块,被配置为根据所述日志数据中访问所述目标数据库表的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是适于用来实现根据本公开一实施方式的数据库表的处理方法的电子设备的结构示意图。
具体实施方式
下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
数据库系统中数据表的健康度直接影响软件系统、网站平台等的稳定性、可用性、性能等指标。例如,热点数据集中在少数数据表中的时候,可能会引起数据库系统的性能问题;如果热点数据表与非热点数据表混合部署在同一硬件资源如同一服务器上,在非热点数据表发生故障时,会影响到热点数据表的正常使用,进而影响到数据库系统核心链路的稳定性;此外,高频访问的热点数据表对性能要求更高,需要更高配资源如物理机或者云计算资源,而非热点数据表等如果也使用高配资源则会导致资源的浪费。
相关技术中通常通过分析访问数据表的SQL语句的性能、数据表的索引、SQL语句的资源消耗等情况,来产出数据库性能的优化方案或者数据库健康度报告,而不是通过分析数据表的使用方法来评估数据表的健康度。因此,相关技术中通过对SQL语句、数据库表的索引的优化,并不能解决数据库表的使用方式是否合理的问题。
为此,本公开实施例提出了一种数据库表的处理方法,该方法包括:获取日志数据;根据所述日志数据获取所述目标数据库表对应的SQL统计数据;所述SQL统计数据包括访问所述目标数据库的SQL语句在预设维度上的统计数据;根据所述SQL统计数据确定所述目标数据表的热点分布信息;其中,所述热点分布信息包括所述目标数据库表是否为热点数据库表和/或所述目标数据库表中的数据记录是否为热点数据记录。该方法通过统计日志数据中针对同一数据库表的SQL语句在多个不同预设维度上的数据,进而根据该统计数据确定该数据库表的热点分布信息,以从表和数据记录两个层面反映数据库表的热点情况,进而能够根据该热点情况评估数据库表的使用是否合理,解决了相关技术中从SQL语句的性能出发无法评估数据库表的使用是否合理的问题。
图1示出根据本公开一实施方式的数据库表的处理方法的流程图。如图1所示,所述数据库表的处理方法包括以下步骤:
在步骤S101中,获取日志数据;
在步骤S102中,根据所述日志数据获取所述目标数据库表对应的SQL统计数据;所述SQL统计数据包括访问所述目标数据库的SQL语句在预设维度上的统计数据;
在步骤S103中,根据所述SQL统计数据确定所述目标数据表的热点分布信息;其中,所述热点分布信息包括所述目标数据库表是否为热点数据库表和/或所述目标数据库表中的数据记录是否为热点数据记录。
本实施例中,该数据库表的处理方法可以在服务器上执行。数据库的日志数据按照时间顺序记录了访问数据库的SQL语句,数据库的日志数据可以包括调用数据库时所执行的SQL语句的时间戳和对应的语句内容。SQL语句包括多种类型,例如Update语句、Delete语句、Replace into语句、Insert语句、Select语句等。每一条SQL语句中可以指定待访问的数据库的标识、数据库表的标识、数据库表中数据记录的标识等,有些SQL语句中还会指定查询条件字段以及对应的字段值。例如,SQL语句“select a,b from table_a where a=1and b=2”中,语句类型为Select,访问的数据库表名为“table_a”,查询条件字段为a和b,而查询条件字段的值为“a=1and b=2”。
数据库的日志数据可以记录在数据库的本地,也可以分布存储在不同的数据节点上,具体根据数据库的类型以及部署方式的不同而不同。例如,对于分布式数据库而言,由于分布式数据库将数据库表分布存储在不同的数据节点上,因此日志数据也可以被存储在不同的数据节点上。因此,这种场景下,可以从多个不同的数据节点收集日志数据。当然,可以理解的是,如果当前处理仅针对的是目标数据库表,则可以从存储目标数据库表的访问日志的数据节点上收集针对目标数据库表的日志数据,具体根据实际应用情况的不同而定,在此不做具体限制。可以理解的是,获取的日志数据可以是有时间段限制的,例如可以获取近三个月产生日志数据,具体时间段的选取可以根据实际需要设定,在此不做具体限制。
在一些实施例中,预设维度可以包括但不限于SQL类型维度、SQL语法结构维度、SQL访问数据的维度等中的一个或多个的组合。SQL类型维度可以对应于SQL语句的类型,例如可以将SQL类型维度定义为Update语句、Delete语句、Replace into语句、Insert语句、Select语句共五种语句类型对应的五个类型维度,也可以定义为其中一个或多个类型维度,还可以通过将上述五个语句类型进一步细分后得到的多于五种语句类型对应的多个类型维度,具体可以根据实际应用的需要进行设定,在此不做限制。
下面以SQL语句类型对应的预设维度为例介绍SQL统计数据:
假如目标数据库表名为table_a,进行统计的预设维度为Select语句类型,则可以通过从日志数据中匹配关键词“table_a”和“Select”找出SQL语句集合,进而可以根据该SQL语句集合得到SQL统计数据,例如该集合中SQL语句的数量,该集合中SQL语句的占比等等。
通过不同预设维度对目标数据库表的日志数据进行统计,并获得SQL统计数据之后,可以根据SQL统计数据确定目标数据库表的热点分布信息,例如目标数据库表为热点数据库表还是非热点数据库表,目标数据库表中哪些属于热点数据记录,哪些属于非热点数据记录等。在一些实施例中,可以将访问次数超过第一阈值,或者访问次数超过数据库中大多数数据库表的目标数据库表标记为热点数据库表,同理,可以将访问次数未超过第二阈值,或者访问次数少于数据库中大多数数据库表的目标数据库表标记为非热点数据库表。在另一些实施例中,可以将目标数据库表中访问次数超过第三阈值的数据记录标记为热点数据记录,而将访问次数未超过第四数阈值的数据记录标记为热点数据记录。其中,第一阈值、第二阈值、第三阈值和第四阈值可以根据实际需求进行设置,而第一阈值和第二阈值可以相同也可以不同,第三阈值和第四阈值也可以相同也可以不同。可以理解的是,为了解释热点和非热点的概念,上述仅列举了部分热点分布信息的生成方式,本公开中生成热点分布信息的方式并不限于上面列举的几种方式。
本公开实施例通过统计日志数据中针对同一数据库表的SQL语句在多个不同预设维度上的数据,进而根据该统计数据确定该数据库表的热点分布信息,以从表和数据记录两个层面反映数据库表的热点情况,进而能够根据该热点情况评估数据库表的使用是否合理,解决了相关技术中从SQL语句的性能出发无法评估数据库表的使用是否合理的问题。
在本实施例的一个可选实现方式中,如图2所示,所述方法还包括以下步骤:
在步骤S104中,根据所述热点分布信息输出所述目标数据库表的优化方案。
该可选的实现方式中,可以根据目标数据库表的热点分布信息对目标数据库表给出优化方案。该优化方案可以包括但不限于针对目标数据库表的资源分配优化方案,资源分配优化方案可以根据目标数据库表的热点分布信息为目标数据库表分配更多或者更少的资源,以便最终达到将有限的资源合理分配给数据库中的各个数据库表的目标。例如,根据热点分布信息将目标数据库表确定为热点数据库表或者非热点数据库表之后,可以将热点数据库表部署在高配置的物理服务器或者云计算资源上,以便为该热点数据库表分配更多的资源,而将非热点数据库表部署在低配置的物理服务器或者云计算资源上,以便为该非热点数据库表分配能匹配其使用率的资源,从而能够避免资源浪费。通过这种方式将硬件资源进行了合理的分配,能够有效的节约成本。
优化方案还可以包括但不限于目标数据表的数据拆分优化方案。数据拆分优化方案可以根据目标数据库表的热点分布信息将目标数据库表中的热点数据记录和非热点数据记录进行拆分,进而拆分出新的热点数据库表和非热点数据库表,之后还可以基于上述资源分配优化方案为拆出来的热点数据库表和非热点数据库表分配合理的资源。
在本实施例的一个可选实现方式中,所述步骤S102,即根据所述日志数据获取所述目标数据库表对应的SQL统计数据的步骤,进一步包括以下步骤中的至少之一:
根据所述日志数据中访问所述目标数据库表的SQL语句的类型维度对所述SQL语句进行统计;
根据所述日志数据中访问所述目标数据库表的SQL语句的语法结构维度对所述SQL语句进行统计;
根据所述日志数据中访问所述目标数据库表的SQL语句所访问数据维度对所述SQL语句进行统计。
该可选的实现方式中,如图2所示,SQL统计数据可以从三个维度进行统计,分别包括:SQL语句的类型维度、SQL语句的语法结构维度和SQL语句所访问数据维度。
SQL语句的类型从大的方面可以分为以下五大类:Update语句、Delete语句、Replace into语句、Insert语句、Select语句;此外,这五大类还可以继续细分,比如Insert语句可以细分为如下几类:1)insert ignore...
2)insert into...ON DUPLICATE KEY UPDATE...
3)除上述1)和2)中规定的insert语句之外的insert语句。
再比如,Select语句还可以细分为如下几类:
1)select...for update
2)select...lock in share mode
3)select...join...
4)select...union...
5)带有subquery的select
6)除上述1)-5)中规定的select语句之外的select语句。
在一些实施例中,可以根据需要从上面的五大类以及继续细分后的小类中的一个或多个类型维度上,对日志数据中访问目标数据库表的SQL语句进行统计,这种方式统计得到的SQL统计数据可以包括多个SQL语句组合,每个SQL语句组合中包括的SQL语句对应于同一种类型维度。
语法结构维度的统计方式可以是针对任意一种语法结构进行统计,也即可以将日志数据中访问目标数据库表的SQL语句按照不同的语法结构进行统计,这种方式统计得到的SQL统计数据可以包括多个SQL语句组合,每个SQL语句组合中包括的SQL语句对应于同一种语法结构。例如,SQL语句为:select a,b from table_a where a=1and b=2;那么该SQL语句的语法结构可以抽象为select a,b from table_a where a=?and b=?,其中的“?”可以是任意的指定字符串。那么,在统计的时候,可以针对抽象出的任意一种语法结构进行统计。
SQL语句所访问数据维度的统计方式可以是针对目标数据库表中的任意一条数据记录进行统计,也即可以将日志数据中访问目标数据库表的SQL语句按照访问的数据记录的不同而进行统计,这种方式统计得到的SQL统计数据可以包括多个SQL语句组合,每个SQL语句组合中包括的SQL语句对应于同一条数据记录。
通过上述三种方式中一种或者多种统计得到的SQL统计数据能够如实反映出目标数据库表的热点分布情况,进而能够根据该SQL统计数据得到目标数据库表的热点分布信息。
在本实施例的一个可选实现方式中,所述根据所述日志数据中访问所述目标数据库表的SQL语句的语法结构维度对所述SQL语句进行统计的步骤,进一步包括以下步骤:
抽取所述日志数据中的所述SQL语句中的语法结构,并针对所述语法结构生成所述SQL语句对应的语法结构的标识;
根据所述语法结构的标识对所述SQL语句进行统计。
该可选的实现方式中,可以通过将SQL语句中的查询字段的值替换成其他字符串,例如空字符串的方式,从原始SQL语句中提取出该SQL语句的语法结构,进而还可以根据该语法结构生成对应于该语法结构的唯一标识,例如可以计算该语法结构对应的字符串的MD5值,将对应的该语法结构的位置标识相同的SQL语句加入对应于该语法结构的SQL语句组合。
在本实施例的一个可选实现方式中,所述抽取所述日志数据中的所述SQL语句中的语法结构的步骤,进一步包括以下步骤:将所述SQL语句中查询条件字段的值替换成预设字符串的方式获得所述语法结构。
例如,SQL语句为:select a,b from table_a where a=1and b=2;那么该SQL语句的语法结构对应的结构串可以表示为select a,b from table_a where a=?and b=?,其中的“?”可以是任意的指定字符串。之后可以生成“select a,b from table_a where a=?and b=?”这一字符串对应的MD5值,将该MD5值记录为该SQL语句对应的语法结构的标识。
在本实施例的一个可选实现方式中,所述根据所述日志数据中访问所述目标数据库表的SQL语句所访问数据维度对所述SQL语句进行统计的步骤,进一步包括以下步骤:
将所述SQL语句按照所述语法结构的标识划分成多个语句组合;
针对每一语句组合,确定所述语句组合中所述SQL语句所访问的字段或字段组合的值;
根据所述字段或字段组合的值统计所述语句组合中的所述SQL语句,以确定所述目标数据库表中对数据记录的访问信息。
该可选的实现方式中,可以根据按照语法结构进行统计的方式中得到的每个SQL语句对应的语法结构以及语法结构的标识,将SQL语句划分成多个语句组合,每个语句组合中的所有SQL语句对应于同一种语法结构,不同语句组合中的SQL语句对应不同的语法结构。
针对每一语句组合,可以确定该语句组合中每个SQL语句所访问的字段或者字段组合的值。例如,SQL语句中的查询条件为“where a=1and create_time=‘2019-11-0615:00’”,那么该SQL语句所访问的字段组合为a和create_time,且它们的值分别为“1”和“2019-11-06 15:00”,因此在同一语句组合中,可以分别针对字段a、字段create_time和字段组合a、create_time的值进行统计,进而确定目标数据库中每条数据记录的访问频次。例如,查询条件为“where a=1and create_time=‘2019-11-06 15:00’”的SQL语句可以被统计在字段组合a、create_time、且值为a=1和create_time=‘2019-11-06 15:00’的统计结果中。
在本实施例的一个可选实现方式中,所述步骤S103,即根据所述SQL统计数据确定所述目标数据表的热点分布信息的步骤,进一步包括以下步骤:
根据所述SQL统计数据确定所述目标数据表的第一访问次数,以及根据所述第一访问次数确定所述目标数据库表是否为热点数据库表。
该可选的实现方式中,如图2所示,热点分布信息中至少可以标记出目标数据库表为热点数据库表或非热点数据库表。可以通过SQL统计数据确定对目标数据库表的第一访问次数,进而根据该第一访问次数确定目标数据库表为热点数据库表还是非热点数据库表。在一些实施例中,可以利用基于SQL语句类型维度统计得到的SQL统计数据确定第一访问次数,例如可以从SQL统计数据中获得Update语句、Insert语句、Select语句对应的语句类型维度上的统计数据,进而将不同类型维度上的SQL统计数据中SQL语句的数量相加得到第一访问次数。通过第一访问次数可以确定目标数据库表在收集到的日志数据对应的时间段内被访问的频率,通过该频率可以确定该目标数据库表是否为热点数据库表。例如,可以预先设置比较阈值,在该第一访问次数超过该比较阈值时,可以认为该目标数据库表为热点数据库表。
在本实施例的一个可选实现方式中,所述步骤S103,即根据所述SQL统计数据确定所述目标数据表的热点分布信息的步骤,进一步包括以下步骤:
根据所述SQL统计数据确定所述目标数据表的第一访问次数,以及确定所述目标数据表中被访问的数据记录的第二访问次数;
根据所述第一访问次数以及所述第二访问次数确定所述目标数据库表中的热点数据记录。
该可选的实现方式中,如图2所示,热点分布信息中还可以标记目标数据库表中的热点数据记录和非热点数据记录。如上所述,第一访问次数可以利用基于SQL语句类型维度统计得到的SQL统计数据确定。
数据记录的第二访问次数可以基于SQL语句所访问数据维度得到的SQL统计数据确定。基于SQL语句所访问数据维度得到的SQL统计数据中针对不同的语法结构统计对应于不同数据记录(也即不同字段、字段组合等对应的值分别对应不同的数据记录)的SQL语句,并且统计得到的数据中包括所对应的SQL语句以及SQL语句的数量等。因此,可以通过基于SQL语句所访问数据维度得到的SQL统计数据确定针对同一数据记录的SQL语句的第二访问次数。
在一些实施例中,第二访问次数在第一访问次数中所占比重超过预设值的情况下,可以认为该数据记录为热点数据记录。在另一些实施例中,还可以通过第二访问次数和第一访问次数判断出对目标数据库表的访问集中在一部分数据记录上时,可以认为该部分数据记录为热点数据记录,而其他数据记录为非热点数据记录。热点数据记录和非热点数据记录的衡量标准与实际应用场景有关,可以根据实际情况进行设置,在此不做具体限制。
在本实施例的一个可选实现方式中,所述根据所述SQL统计数据确定所述目标数据表的第一访问次数的步骤,进一步包括以下步骤:
将所述SQL统计数据中预设访问类型对应的所述SQL语句的数量确定为所述第一访问次数。
该可选的实现方式中,预设访问类型的SQL语句为对目标数据库表产生访问操作的语句类型,对目标数据库表的访问操作可以包括对目标数据库表中数据记录的查询操作、更新操作、删除操作、插入操作中的一种或多种,因此可以根据实际需要设置预设访问类型,比如在设置了预设访问类型为所有语句类型时,则第一访问次数统计的是所有针对目标数据库表的SQL语句,而在设置预设访问类型为Update语句、Insert语句时,则第一访问次数统计的是对目标数据库表的数据有写入操作的SQL语句。
在本实施例的一个可选实现方式中,所述根据所述第一访问次数以及所述第二访问次数确定所述目标数据库表中的热点数据记录的步骤,进一步包括以下步骤:
将所述目标数据库表中的数据记录按照所述第二访问次数进行排序;
根据排序结果确定第一部分数据记录的第二访问次数之和;所述第一部分数据记录包括排序在前且数量少于第一预设与阈值的数据记录;
在所述第二访问次数之和占所述第一访问次数的比重超过第二预设阈值,将所述第一部分数据记录确定为热点数据记录。
该可选的实现方式中,例如对目标数据库表的第一访问次数是20万次,且目标数据库表中有100万条数据记录,数据记录的ID值是从1~100万,而目标数据库表的20万次访问中超过80%的访问请求集中在ID值为80万~100万的数据记录上,则可以判定ID值为80万~100万的数据记录为热点数据记录,而ID值从1~80万的记录是非热点数据记录。通过这种方式,可以获得数据记录的热点信息分布,进而为目标数据库表的优化提供了有力的依据。通过这种方式可以将目标数据库表中数据记录划分为热点数据记录和非热点数据记录,在生成优化方案时可以建议将非热点数据记录拆分到非热点数据表中,以便将非热点数据记录迁移到低配置硬件资源上,节省硬件成本,避免资源的浪费。
在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:
在所述第二访问次数之和占所述第一访问次数的比重未超过第二预设阈值,且所述第一访问次数超过表拆分阈值时,将所述目标数据库表中的全部数据记录确定热点数据记录。
该可选的实现方式中,例如对目标数据库表的第一访问次数是20万次,且目标数据库表中有100万条数据记录,数据记录的ID值是从1~100万,而目标数据库表的20万次访问中不存在超过80%的访问请求集中在一部分数据记录上的情况,而是均衡分布在ID值是从1~100万的数据记录上,此时可以将第一访问次数与预先设置的表拆分阈值进行比较,在第一访问次数超过表拆分阈值时,可以认为该目标数据库表为全热点数据表,也即其中的所有数据记录都是热点数据记录。这种情况下,在生成优化方案时,可以给出将该全热点数据表进行拆分的建议,也即大表拆分成小表,以提高热点数据记录的访问速度。
在本实施例的一个可选实现方式中,所述根据所述第一访问次数以及所述第二访问次数确定所述目标数据库表中的热点数据记录的步骤,进一步包括以下步骤:
在所述第一访问次数超过第三预设阈值,且所述数据记录的所述第二访问次数占所述第一访问次数的比重超过第四预设阈值,则确定所述数据记录为热点数据记录。
该可选的实现方式中,第一访问次数可以是update语句类型对应的SQL语句数量。当然,可以理解的是,第一访问次数也可以是其他预设访问类型的SQL语句数量,具体可以根据实际情况设定,在此不做限制。
下面举例说明:假如目标数据库表table_a的update语句类型对应的第一访问次数为count_update(比如是150万次),而预先设置的第三预设阈值为hot_count_update(比如设置为50万次),对同一条记录data_record_01的更新操作次数(也即针对该data_record_01的update语句类型的SQL语句数量)是hot_record_percentage,如果count_update的值大于或等于hot_count_update,并且data_record_01/count_update的比值是data_update_percentage(比如50.02%),如果data_update_percentage大于预设的第四预设阈值hot_update_metric(比如设置为30%),则可以标记该数据记录data_record_01为热点数据记录hot_record。第三预设阈值和第四预设阈值可以根据实际需要预先设置,在此不做限制。针对这种方式确定出来的热点数据记录,在生成优化方案时,可以给出将这些热点数据记录迁移至缓存系统的建议,以便能够提高热点数据的访问速度。
在本实施例的一个可选实现方式中,所述根据所述热点分布信息输出所述目标数据库表的优化方案的步骤,进一步包括以下步骤:
根据所述目标数据库表是否为热点数据库表确定所述目标数据库表与当前分配给所述目标数据库表的资源配置是否匹配;
在所述目标数据库表与当前分配给所述目标数据库表的资源配置不匹配时,输出将所述目标数据库表迁移至能够提供相匹配的资源配置的硬件资源上的优化方案。
该可选的实现方式中,如图2所示,优化方案中可以包括为热点数据库表分配高配置资源、为非热点数据库表分配低配置资源的建议。热点信息分布中表明了目标数据库表为热点数据库表还是非热点数据库表,在目标数据库表是热点数据库表时,可以为目标数据库表提供更高的资源配置,因此当前目标数据库表所在的物理服务器和/或云计算资源的配置较低,则可以输出将目标数据库表迁移至高配置的物理服务器和/或云计算资源的优化方案,以便能够提高目标数据库表的响应速度。在目标数据库表是非热点数据库表时,可以为目标数据库表提供较低的资源配置,因此当前目标数据库表所在的物理服务器和/或云计算资源的配置较高,则可以输出将目标数据库表迁移至低配置的物理服务器和/或云计算资源的优化方案,以便能够节省硬件资源,进而降低硬件成本。
在本实施例的一个可选实现方式中,所述根据所述热点分布信息输出所述目标数据库表的优化方案的步骤,进一步包括以下步骤:
针对所述目标数据库表中的热点数据记录,输出将所述热点数据记录迁移到缓存系统中的优化方案;
针对所述目标数据库表中的热点数据记录和非热点数据记录,输出将所述热点数据记录和非热点数据记录拆分到热点数据库表和非热点数据库表的优化方案;
针对所述目标数据库表所有数据记录均为热点数据记录,输出将所述目标数据库表进行拆分的优化方案。
该可选的实现方式中,如图2所示,优化方案中还可以包括将热点数据记录迁移至缓存系统的建议,和/或将目标数据库表中的热点数据记录和非热点数据记录拆分到热点数据库表和非热点数据库表中的建议。热点分布信息中还表明了目标数据库表中哪些数据记录为非热点数据记录,哪些数据记录为热点数据记录。在一些实施例中,针对热点数据记录,则可以输出将热点数据记录迁移至缓存系统(如Redis、memcache等)中的优化方案,以便能够提高热点数据记录的访问速度。该实施例中热点数据记录可以是根据上述实施例中,在第一访问次数超过第三预设阈值,且数据记录的第二访问次数占第一访问次数的比重超过第四预设阈值为条件筛选出来的,当然,可以理解的是,该实施例的热点数据记录不限于上述筛选方式。
在另一些实施例中,还可以针对目标数据库表中的非热点数据记录以及热点数据记录,输出将热点数据记录和非热点数据记录进行拆分得到包括热点数据记录的热点数据库表和包括非热点数据记录的非热点数据库表,进而可以根据上述实施例中公开的将热点数据库表迁移至高配置硬件资源,而将非热点数据库表迁移至低配置硬件资源的优化方案。该实施例中热点数据记录可以是根据上述实施例中,将目标数据库表中的数据记录按照第二访问次数进行排序,并确定第一部分数据记录的第二访问次数之和,第一部分数据记录包括排序在前且数量少于第一预设阈值的数据记录,在第二访问次数之和占第一访问次数的比重超过第二预设阈值为条件筛选出来的,当然,可以理解的是,该实施例的热点数据记录不限于上述筛选方式。
在另一些实施例中,在热点分布信息中标记该目标数据库表为全热点数据表,也即该目标数据库表中所有数据记录均为热点数据时,则可以输出将该目标数据库表进行拆分的优化方案,以便能够将大表拆分成小表的方式,提高热点数据记录的响应速度。
在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:
生成展示所述热点分布信息的健康度报告。
该可选的实现方式中,可以根据目标数据库表的热点分布信息生成健康度报告,该健康度报告中可以可视化的方式展示出热点分布信息,例如数据库中哪些数据库表是热点数据库表,每个数据库表中的哪些数据记录是热点数据记录,哪些是非热点数据记录,哪些数据库表属于全表热点数据表(也即全部记录均为热点数据记录)等。
如图3所示,本公开实施例利用业务数据库中间件进行日志采集,业务数据库中间件接收到业务SQL请求之后,针对该SQL请求进行日志解析处理,并存储在日志数据中。服务器可以周期性的从日志数据中收集预设时间段内针对数据库中部分或者所有数据库表的日志数据,并从所收集到的日志数据针对每一数据库表执行本公开实施例提出的上述数据库表的处理方法,进而针对每条SQL语句提取出如下信息:数据库表名称-SQL类型-SQL的时间戳-SQL语法结构的SQL ID-SQL语法结构的结构串-查询条件中的字段的值等。根据上述提取出的信息可以从多个预设维度进行统计,得到SQL统计数据,例如从SQL类型维度的统计数据、从SQL语法结构维度的统计数据、SQL访问的数据维度的统计数据。利用上述SQL统计数据还可以生成健康度报告。健康度报告中可以展示出热点表、非热点表、热点数据记录、非热点数据记录、全表热点数据、部分热点数据、查询、新增、删除、更新记录数、select、update是否存在密集热点记录等数据。通过这种方式,可以使得相关人员能够从数据角度直观地了解到数据库的当前健康状况,进而还可以根据优化方案进行一些相应的优化。
下述为本公开装置实施例,可以用于执行本公开方法实施例。
图4示出根据本公开一实施方式的数据库表的处理装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图4所示,所述数据库表的处理装置包括:
第一获取模块401,被配置为获取日志数据;
第二获取模块402,被配置为根据所述日志数据获取所述目标数据库表对应的SQL统计数据;所述SQL统计数据包括访问所述目标数据库的SQL语句在预设维度上的统计数据;
第一确定模块403,被配置为根据所述SQL统计数据确定所述目标数据表的热点分布信息;其中,所述热点分布信息包括所述目标数据库表是否为热点数据库表和/或所述目标数据库表中的数据记录是否为热点数据记录。
本实施例中,该数据库表的处理装置可以位于服务器上。数据库的日志数据按照时间顺序记录了访问数据库的SQL语句,数据库的日志数据可以包括调用数据库时所执行的SQL语句的时间戳和对应的语句内容。SQL语句包括多种类型,例如Update语句、Delete语句、Replace into语句、Insert语句、Select语句等。每一条SQL语句中可以指定待访问的数据库的标识、数据库表的标识、数据库表中数据记录的标识等,有些SQL语句中还会指定查询条件字段以及对应的字段值。例如,SQL语句“select a,b from table_a where a=1andb=2”中,语句类型为Select,访问的数据库表名为“table_a”,查询条件字段为a和b,而查询条件字段的值为“a=1and b=2”。
数据库的日志数据可以记录在数据库的本地,也可以分布存储在不同的数据节点上,具体根据数据库的类型以及部署方式的不同而不同。例如,对于分布式数据库而言,由于分布式数据库将数据库表分布存储在不同的数据节点上,因此日志数据也可以被存储在不同的数据节点上。因此,这种场景下,可以从多个不同的数据节点收集日志数据。当然,可以理解的是,如果当前处理仅针对的是目标数据库表,则可以从存储目标数据库表的访问日志的数据节点上收集针对目标数据库表的日志数据,具体根据实际应用情况的不同而定,在此不做具体限制。可以理解的是,获取的日志数据可以是有时间段限制的,例如可以获取近三个月产生日志数据,具体时间段的选取可以根据实际需要设定,在此不做具体限制。
在一些实施例中,预设维度可以包括但不限于SQL类型维度、SQL语法结构维度、SQL访问数据的维度等中的一个或多个的组合。SQL类型维度可以对应于SQL语句的类型,例如可以将SQL类型维度定义为Update语句、Delete语句、Replace into语句、Insert语句、Select语句共五种语句类型对应的五个类型维度,也可以定义为其中一个或多个类型维度,还可以通过将上述五个语句类型进一步细分后得到的多于五种语句类型对应的多个类型维度,具体可以根据实际应用的需要进行设定,在此不做限制。
下面以SQL语句类型对应的预设维度为例介绍SQL统计数据:
假如目标数据库表名为table_a,进行统计的预设维度为Select语句类型,则可以通过从日志数据中匹配关键词“table_a”和“Select”找出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语句的数量确定为所述第一访问次数。
在本实施例的一个可选实现方式中,所述第四确定子模块,包括:
排序子模块,被配置为将所述目标数据库表中的数据记录按照所述第二访问次数进行排序;
第六确定子模块,被配置为根据排序结果确定第一部分数据记录的第二访问次数之和;所述第一部分数据记录包括排序在前且数量少于第一预设阈值的数据记录;
第七确定子模块,被配置为在所述第二访问次数之和占所述第一访问次数的比重超过第二预设阈值,将所述第一部分数据记录确定为热点数据记录。
在本实施例的一个可选实现方式中,所述装置还包括:
第二确定模块,被配置为在所述第二访问次数之和占所述第一访问次数的比重未超过第二预设阈值,且所述第一访问次数超过表拆分阈值时,将所述目标数据库表中的全部数据记录确定热点数据记录。
在本实施例的一个可选实现方式中,所述第四确定子模块,包括:
第八确定子模块,被配置为在所述第一访问次数超过第三预设阈值,且所述数据记录的所述第二访问次数占所述第一访问次数的比重超过第四预设阈值,则确定所述数据记录为热点数据记录。
在本实施例的一个可选实现方式中,所述输出模块,包括:
第九确定子模块,被配置为根据所述目标数据库表是否为热点数据库表确定所述目标数据库表与当前分配给所述目标数据库表的资源配置是否匹配;
第一输出子模块,被配置为在所述目标数据库表与当前分配给所述目标数据库表的资源配置不匹配时,输出将所述目标数据库表迁移至能够提供相匹配的资源配置的硬件资源上的优化方案。
在本实施例的一个可选实现方式中,所述输出模块,包括以下至少之一:
第二输出子模块,被配置为针对所述目标数据库表中的热点数据记录,输出将所述热点数据记录迁移到缓存系统中的优化方案;
第三输出子模块,被配置为针对所述目标数据库表中的热点数据记录和非热点数据记录,输出将所述热点数据记录和非热点数据记录拆分到热点数据库表和非热点数据库表的优化方案;
第四输出子模块,被配置为针对所述目标数据库表所有数据记录均为热点数据记录,输出将所述目标数据库表进行拆分的优化方案。
本公开实施例中的数据库表的处理装置与上述实施例中描述的数据库表的处理方法对应一致,具体细节可以参见上述对数据库表的处理方法的描述,在此不做赘述。
本公开实施方式还提供了一种电子设备,如图5所示,包括至少一个处理器501;以及与至少一个处理器501通信连接的存储器502;其中,存储器502存储有可被至少一个处理器501执行的指令,指令被至少一个处理器501执行以实现:
获取日志数据;
根据所述日志数据获取所述目标数据库表对应的SQL统计数据;所述SQL统计数据包括访问所述目标数据库的SQL语句在预设维度上的统计数据;
根据所述SQL统计数据确定所述目标数据表的热点分布信息;其中,所述热点分布信息包括所述目标数据库表是否为热点数据库表和/或所述目标数据库表中的数据记录是否为热点数据记录。
具体地,处理器501、存储器502可以通过总线或者其他方式连接,图5中以通过总线连接为例。存储器502作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器501通过运行存储在存储器502中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现本公开实施例中的上述方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储航运网络运输的历史数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,电子设备可选地包括通信组件503,存储器502可选地包括相对于处理器501远程设置的存储器,这些远程存储器可以通过通信组件503连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器502中,当被一个或者多个处理器501执行时,执行本公开实施例中的上述方法。
上述产品可执行本公开实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本公开实施方式所提供的方法。
附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (10)

1.一种数据库表的处理方法,其特征在于,包括:
获取日志数据;
根据所述日志数据获取所述目标数据库表对应的SQL统计数据;所述SQL统计数据包括访问所述目标数据库的SQL语句在预设维度上的统计数据;
根据所述SQL统计数据确定所述目标数据表的热点分布信息;其中,所述热点分布信息包括所述目标数据库表是否为热点数据库表和/或所述目标数据库表中的数据记录是否为热点数据记录。
2.根据权利要求1所述的方法,其特征在于,还包括:
根据所述热点分布信息输出所述目标数据库表的优化方案。
3.根据权利要求1或2所述的方法,其特征在于,根据所述日志数据获取所述目标数据库表对应的SQL统计数据,包括以下至少之一:
根据所述日志数据中访问所述目标数据库表的SQL语句的类型维度对所述SQL语句进行统计;
根据所述日志数据中访问所述目标数据库表的SQL语句的语法结构维度对所述SQL语句进行统计;
根据所述日志数据中访问所述目标数据库表的SQL语句所访问数据维度对所述SQL语句进行统计。
4.根据权利要求3所述的方法,其特征在于,根据所述日志数据中访问所述目标数据库表的SQL语句的语法结构维度对所述SQL语句进行统计,包括:
抽取所述日志数据中的所述SQL语句中的语法结构,并针对所述语法结构生成所述SQL语句对应的语法结构的标识;
根据所述语法结构的标识对所述SQL语句进行统计。
5.根据权利要求4所述的方法,其特征在于,抽取所述日志数据中的所述SQL语句中的语法结构,包括:
将所述SQL语句中查询条件字段的值替换成预设字符串的方式获得所述语法结构。
6.根据权利要求4或5所述的方法,其特征在于,根据所述日志数据中访问所述目标数据库表的SQL语句所访问数据维度对所述SQL语句进行统计,包括:
将所述SQL语句按照所述语法结构的标识划分成多个语句组合;
针对每一语句组合,确定所述语句组合中所述SQL语句所访问的字段或字段组合的值;
根据所述字段或字段组合的值统计所述语句组合中的所述SQL语句,以确定所述目标数据库表中对数据记录的访问信息。
7.根据权利要求1所述的方法,其特征在于,根据所述SQL统计数据确定所述目标数据表的热点分布信息,包括:
根据所述SQL统计数据确定所述目标数据表的第一访问次数,以及根据所述第一访问次数确定所述目标数据库表是否为热点数据库表。
8.一种数据库表的处理装置,其特征在于,包括:
第一获取模块,被配置为获取日志数据;
第二获取模块,被配置为根据所述日志数据获取所述目标数据库表对应的SQL统计数据;所述SQL统计数据包括访问所述目标数据库的SQL语句在预设维度上的统计数据;
第一确定模块,被配置为根据所述SQL统计数据确定所述目标数据表的热点分布信息;其中,所述热点分布信息包括所述目标数据库表是否为热点数据库表和/或所述目标数据库表中的数据记录是否为热点数据记录。
9.一种电子设备,其特征在于,包括存储器和至少一个处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述至少一个处理器执行以实现权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被至少一个处理器执行时实现权利要求1-7任一项所述的方法。
CN202010060164.9A 2020-01-19 2020-01-19 数据库表的处理方法、装置、电子设备及存储介质 Pending CN111324604A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010060164.9A CN111324604A (zh) 2020-01-19 2020-01-19 数据库表的处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010060164.9A CN111324604A (zh) 2020-01-19 2020-01-19 数据库表的处理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN111324604A true CN111324604A (zh) 2020-06-23

Family

ID=71172822

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010060164.9A Pending CN111324604A (zh) 2020-01-19 2020-01-19 数据库表的处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111324604A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157690A (zh) * 2020-12-28 2021-07-23 北京金万维科技有限公司 一种面向统计的流水日志数据组织方法
CN113535757A (zh) * 2021-08-12 2021-10-22 厦门市易联众易惠科技有限公司 一种冷热数据的发现方法、装置、设备及可读存储介质
CN114490749A (zh) * 2021-12-28 2022-05-13 珠海大横琴科技发展有限公司 一种资源访问的方法和装置
CN114637736A (zh) * 2022-03-09 2022-06-17 北京金堤科技有限公司 一种数据库拆分方法和装置
CN115827767A (zh) * 2023-02-07 2023-03-21 北京仁科互动网络技术有限公司 数据存储系统、数据存储方法和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130013561A1 (en) * 2011-07-08 2013-01-10 Microsoft Corporation Efficient metadata storage
CN103092867A (zh) * 2011-11-03 2013-05-08 中国移动通信集团甘肃有限公司 一种数据管理方法及系统、数据分析装置
CN108182215A (zh) * 2017-12-22 2018-06-19 微梦创科网络科技(中国)有限公司 一种结构化查询语言sql性能统计的方法及装置
CN108984553A (zh) * 2017-06-01 2018-12-11 北京京东尚科信息技术有限公司 缓存方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130013561A1 (en) * 2011-07-08 2013-01-10 Microsoft Corporation Efficient metadata storage
CN103092867A (zh) * 2011-11-03 2013-05-08 中国移动通信集团甘肃有限公司 一种数据管理方法及系统、数据分析装置
CN108984553A (zh) * 2017-06-01 2018-12-11 北京京东尚科信息技术有限公司 缓存方法和装置
CN108182215A (zh) * 2017-12-22 2018-06-19 微梦创科网络科技(中国)有限公司 一种结构化查询语言sql性能统计的方法及装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157690A (zh) * 2020-12-28 2021-07-23 北京金万维科技有限公司 一种面向统计的流水日志数据组织方法
CN113535757A (zh) * 2021-08-12 2021-10-22 厦门市易联众易惠科技有限公司 一种冷热数据的发现方法、装置、设备及可读存储介质
CN113535757B (zh) * 2021-08-12 2023-06-23 厦门市易联众易惠科技有限公司 一种冷热数据的发现方法、装置、设备及可读存储介质
CN114490749A (zh) * 2021-12-28 2022-05-13 珠海大横琴科技发展有限公司 一种资源访问的方法和装置
CN114637736A (zh) * 2022-03-09 2022-06-17 北京金堤科技有限公司 一种数据库拆分方法和装置
CN115827767A (zh) * 2023-02-07 2023-03-21 北京仁科互动网络技术有限公司 数据存储系统、数据存储方法和电子设备

Similar Documents

Publication Publication Date Title
CN111324604A (zh) 数据库表的处理方法、装置、电子设备及存储介质
US8924373B2 (en) Query plans with parameter markers in place of object identifiers
CN103678494A (zh) 客户端同步服务端数据的方法及装置
EP0586550A1 (en) Relational data base memory utilization analyzer
CN111259004B (zh) 一种存储引擎中数据索引的方法以及相关装置
CN111339171B (zh) 数据查询的方法、装置及设备
CN105468720A (zh) 集成分布式数据处理系统的方法、相应系统及其数据处理方法
CN104239377A (zh) 跨平台的数据检索方法及装置
CN105512283A (zh) 数据质量管理控制方法及装置
CN113420026B (zh) 数据库表结构变更方法、装置、设备及存储介质
CN103246745A (zh) 一种基于数据仓库的数据处理装置及方法
CN111414410A (zh) 数据处理方法、装置、设备和存储介质
CN111078276B (zh) 应用程序的冗余资源处理方法、装置、设备及存储介质
CN111767574A (zh) 用户权限确定方法、装置、电子设备及可读存储介质
CN113282579A (zh) 一种异构数据存储与检索方法、装置、设备及存储介质
Suganya et al. Efficient fragmentation and allocation in distributed databases
US7441252B2 (en) Cache control device, and method and computer program for the same
CN112463814A (zh) 一种数据查询方法及装置
CN114443625A (zh) 数据库的处理方法、装置
CN113868267A (zh) 注入时序数据的方法、查询时序数据的方法及数据库系统
CN111311329B (zh) 标签数据获取方法、装置、设备及可读存储介质
CN113553320B (zh) 数据质量监控方法及装置
CN114428789B (zh) 数据的处理方法及装置
CN113626423B (zh) 业务数据库的日志管理方法、装置、系统
CN115794827B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20200623

RJ01 Rejection of invention patent application after publication