1.本技术涉及数据库管理技术领域,尤其涉及一种基于用户行为的数据库表字段索引建立方法及系统。
背景技术:2.为了提升数据库的查询性能,通常会为数据库表字段建立索引。针对不同类型、频次的查询请求,正确建立索引能够将查询速度提升一个数量级。但是,索引本身是一种冗余,会消耗磁盘空间,因此如何正确建立索引十分关键。
3.目前,对数据库表字段建立索引的方法一般有以下几种:第一种是对所有数据库表字段均建立索引,但这种方式索引过多且相对孤立,通常存在无用索引,导致占用大量磁盘空间,而在查询时也容易出现慢查询问题。第二种是在系统上线前均不建立索引,在上线后产生慢查询后再排查问题,并建立对应索引,然而排查性能问题要消耗大量人力物力,由于数据量巨大,在排查后再建立索引通常也十分缓慢,甚至影响处理其他业务请求。第三种是根据既定业务需求,对部分数据库表字段建立索引,然而某些系统在运行过程中,会有动态的查询请求产生,此时开发者根据既定业务需求对部分数据库表字段的建立索引可能无法对这些动态的查询请求生效,同样会引发慢查询问题。
技术实现要素:4.本技术的目的在于提供种基于用户行为的数据库表字段索引建立方法及系统,以解决现有的数据库表字段索引建立方法中存在的占用大量磁盘空间,易出现慢查询,甚至影响其他业务请求处理的问题。
5.为实现上述目的,本技术提供一种基于用户行为的数据库表字段索引建立方法,包括:
6.通过监听器接收客户端请求,构建请求信息库;
7.调用索引建立器,并按照预设周期从请求信息库中获取请求信息,统计请求信息中对应字段序列的平均查询频次和区分度以及对应表的总行数,生成分析结果;其中,所述区分度为字段中所有不同的值的个数占表总行数的比例;
8.根据分析结果判断当前请求是否满足建立索引的条件;若满足,则建立索引序列。
9.进一步地,通过dml语句建立索引序列。
10.进一步地,所述建立索引的条件的默认配置包括:
11.请求信息中对应字段序列的平均查询频次连续3天内超过10分钟1次、对应字段序列的区分度大于0.3,以及对应表的总行数超过1000行。
12.进一步地,所述的基于用户行为的数据库表字段索引建立方法,还包括:
13.若当前请求不满足建立索引的条件,则返回执行按照预设周期从请求信息库获取请求信息步骤。
14.进一步地,所述请求包括sql语句执行请求。
15.进一步地,所述监听器包括拦截器,所述拦截器可采用mybatis。
16.本技术还提供一种基于用户行为的数据库表字段索引建立系统,包括:
17.监听单元,用于通过监听器接收客户端请求,构建请求信息库;
18.分析单元,用于调用索引建立器,并按照预设周期从请求信息库中获取请求信息,统计请求信息中对应字段序列的平均查询频次和区分度以及对应表的总行数,生成分析结果;其中,所述区分度为字段中所有不同的值的个数占表总行数的比例;
19.索引建立单元,用于根据分析结果判断当前请求是否满足建立索引的条件;若满足,则建立索引序列。
20.进一步地,所述索引建立单元,还用于通过dml语句建立索引序列。
21.本技术还提供一种终端设备,包括:
22.一个或多个处理器;
23.存储器,与所述处理器耦接,用于存储一个或多个程序;
24.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上任一项所述的基于用户行为的数据库表字段索引建立方法。
25.本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的基于用户行为的数据库表字段索引建立方法。
26.相对于现有技术,本技术的有益效果在于:
27.本技术公开了一种基于用户行为的数据库表字段索引建立方法及系统,该方法包括:通过监听器接收客户端请求,构建请求信息库;调用索引建立器,并按照预设周期从请求信息库中获取请求信息,统计请求信息中对应字段序列的平均查询频次和区分度以及对应表的总行数,生成分析结果;其中,所述区分度为字段中所有不同的值的个数占表总行数的比例;根据分析结果判断当前请求是否满足建立索引的条件;若满足,则建立索引序列。
28.本技术无需在系统上线之前建立索引,而是通过一套检测机制,监控、识别、分析用户的行为,预测用户可能经常查询的字段,并对其建立索引,做到既提升性能又不浪费磁盘空间,同时提升了开发效率。
附图说明
29.为了更清楚地说明本技术的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
30.图1是本技术某一实施例提供的基于用户行为的数据库表字段索引建立方法的流程示意图;
31.图2是本技术某一实施例提供的监听器和索引建立器并行运算的流程示意图;
32.图3是本技术某一实施例提供的基于用户行为的数据库表字段索引建立系统的结构示意图;
33.图4是本技术某一实施例提供的终端设备的结构示意图。
具体实施方式
34.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
35.应当理解,文中所使用的步骤编号仅是为了方便描述,不对作为对步骤执行先后顺序的限定。
36.应当理解,在本技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本技术。如在本技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
37.术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
38.术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
39.为了帮助理解,首先对于本技术涉及的相关术语进行解释:
40.关系型数据库:关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。
41.服务端:本技术的服务端在整个架构中扮演处理请求的角色,负责处理所有客户端发送来的请求。
42.客户端:本技术的本技术的在整个架构中扮演发起请求的角色,会向服务器发送请求。
43.表字段:数据库中的某一个二维表格中的某一列。
44.索引:对某一表字段建立的结构,这种结构可以提升系统查询该字段的效率,类似于人们常说的目录。
45.联合索引:索引的一种,这种索引并非对某一表字段建立,而是对一组有序的表字段建立,用于多字段筛选查询等场景的效率提升。
46.慢查询:当系统处理查询请求的时间超过一定阈值(比如5秒)时,将该查询称为慢查询。
47.全表扫描:当一个查询要对某一个字段进行筛选,而这个字段没有建立索引时,系统会对整个表进行逐行扫描,此行为效率极低,一般通过正确建立索引解决。
48.请参阅图1,本技术某一实施例提供一种基于用户行为的数据库表字段索引建立方法。如图1所示,该基于用户行为的数据库表字段索引建立方法包括步骤s10至步骤s30。各步骤具体如下:
49.s10、通过监听器接收客户端请求,构建请求信息库;
50.s20、调用索引建立器,并按照预设周期从请求信息库中获取请求信息,统计请求信息中对应字段序列的平均查询频次和区分度以及对应表的总行数,生成分析结果;其中,所述区分度为字段中所有不同的值的个数占表总行数的比例;
51.s30、根据分析结果判断当前请求是否满足建立索引的条件;若满足,则建立索引
序列。
52.需要说明的是,现有的建立索引方式通常存在建立无效索引浪费磁盘空间或慢查询的问题,为了解决该问题,本实施例旨在提供一种索引建立方法,在系统上线之前无需建立索引,而是通过一套检测机制,监控、识别、分析用户的行为,预测用户可能经常查询的字段,并对其建立索引。
53.具体地,本实施例中,首先在s10中请求启动监听器服务,当成功后则调用监听器来监听客户端请求,并根据客户端请求构建请求信息库。然后执行步骤s20,即调用索引建立器,并按照预设周期从请求信息库中获取请求信息,统计请求信息中对应字段序列的平均查询频次和区分度以及对应表的总行数,生成分析结果;其中,所述区分度为字段中所有不同的值的个数占表总行数的比例;最后在步骤s30中根据分析结果判断当前请求是否满足建立索引的条件;若满足,则建立索引序列。作为优选地,若当前请求不满足建立索引的条件,则返回执行按照预设周期从请求信息库获取请求信息步骤。
54.请参阅图2,在一个具体地实施例中,给出了监听器和索引建立器并行运行的流程图,下面将基于图2对于本技术提供的方法进一步阐述:
55.监听器部分的工作流程如下:
56.1)监听器接收客户端请求,作为优选地,监听器可以通过类似mybatis(一种开发时使用的框架)的拦截器机制拦截接收客户端请求,而客户端请求可以是任何sql(数据库查询语言)语句执行请求。
57.2)监听器将请求信息记录到请求信息库中,请求信息库中存储每一次请求的信息,这些信息包括sql语句本身和请求时间。
58.3)监听器将请求转发给服务器。
59.4)服务器处理请求,此处处理的请求可以是任意的sql语句执行请求,处理的过程会根据具体的数据库引擎有所不同。
60.5)服务器返回请求结果给客户端。
61.索引建立器部分的工作流程如下:
62.1)周期性地将请求信息库中的数据通过sql查询的方式拉取下来,作为优选地,默认周期是1天。
63.2)分析请求信息,得到分析结果。具体地,分析方式为通过统计每种sql语句的频次,再分解sql语句得到每个字段序列的平均查询频次。再扫描字段序列对应的列,统计出总行数,计算出区分度。其中,区分度是指该字段所有不同的值的个数占表总行数的比例。
64.3)根据分析结果判断目前是否满足配置时建立索引的所有条件,如果满足,就跳转到第4步,否则跳转到第5步。具体地判断目前是否满足配置时建立索引的所有条件可参见表1:
65.表1条件列表和默认配置对应关系表
[0066][0067]
根据表1可知,当请求信息中对应字段序列的平均查询频次连续3天内超过10分钟1次、对应字段序列的区分度大于0.3以及对应表的总行数超过1000行时,则满足构建索引的条件。需要强调的是,此处的默认配置内容只是一种优选方式,在实际应用中,该配置可以根据应用场景需要灵活调整,此处不作任何限定。
[0068]
4)通过dml(数据管理语言,sql语句的一种)语句建立对应的索引序列
[0069]
5)本周期结束,进入等待状态。
[0070]
本技术实施例提供的基于用户行为的数据库表字段索引建立方法,通过一套检测机制,监控、识别、分析用户的行为,预测用户可能经常查询的字段,并对其建立索引,做到既提升性能又不浪费磁盘空间,同时提升了开发效率。
[0071]
请参阅图3,本技术某一实施例还提供一种基于用户行为的数据库表字段索引建立系统,包括:
[0072]
监听单元01,用于通过监听器接收客户端请求,构建请求信息库;
[0073]
分析单元02,用于调用索引建立器,并按照预设周期从请求信息库中获取请求信息,统计请求信息中对应字段序列的平均查询频次和区分度以及对应表的总行数,生成分析结果;其中,所述区分度为字段中所有不同的值的个数占表总行数的比例;
[0074]
索引建立单元03,用于根据分析结果判断当前请求是否满足建立索引的条件;若满足,则建立索引序列。
[0075]
进一步地,索引建立单元03,还用于通过dml语句建立索引序列。
[0076]
可以理解的是,本技术实施例提供的基于用户行为的数据库表字段索引建立系统用于执行如上述任意一项实施例所述的基于用户行为的数据库表字段索引建立方法,并实现与其相同的效果,此处不再进一步赘述。
[0077]
请参阅图4,本技术某一实施例提供一种终端设备,包括:
[0078]
一个或多个处理器;
[0079]
存储器,与所述处理器耦接,用于存储一个或多个程序;
[0080]
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的基于用户行为的数据库表字段索引建立方法。
[0081]
处理器用于控制该终端设备的整体操作,以完成上述的基于用户行为的数据库表字段索引建立方法的全部或部分步骤。存储器用于存储各种类型的数据以支持在该终端设备的操作,这些数据例如可以包括用于在该终端设备上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(static random access memory,简称
sram),电可擦除可编程只读存储器(electrically erasable programmable read-only memory,简称eeprom),可擦除可编程只读存储器(erasable programmable read-only memory,简称eprom),可编程只读存储器(programmable read-only memory,简称prom),只读存储器(read-only memory,简称rom),磁存储器,快闪存储器,磁盘或光盘。
[0082]
在一示例性实施例中,终端设备可以被一个或多个应用专用集成电路(application specific 1ntegrated circuit,简称as1c)、数字信号处理器(digital signal processor,简称dsp)、数字信号处理设备(digital signal processing device,简称dspd)、可编程逻辑器件(programmable logic device,简称pld)、现场可编程门阵列(field programmable gate array,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行如上述任一项实施例所述的基于用户行为的数据库表字段索引建立方法,并达到如上述方法一致的技术效果。
[0083]
在另一示例性实施例中,还提供一种包括计算机程序的计算机可读存储介质,该计算机程序被处理器执行时实现如上述任一项实施例所述的基于用户行为的数据库表字段索引建立方法的步骤。例如,该计算机可读存储介质可以为上述包括计算机程序的存储器,上述计算机程序可由终端设备的处理器执行以完成如上述任一项实施例所述的基于用户行为的数据库表字段索引建立方法,并达到如上述方法一致的技术效果。
[0084]
以上所述是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本技术的保护范围。