CN115705320A - 索引生成方法、装置、计算机设备和计算机可读存储介质 - Google Patents
索引生成方法、装置、计算机设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN115705320A CN115705320A CN202110915018.4A CN202110915018A CN115705320A CN 115705320 A CN115705320 A CN 115705320A CN 202110915018 A CN202110915018 A CN 202110915018A CN 115705320 A CN115705320 A CN 115705320A
- Authority
- CN
- China
- Prior art keywords
- query
- target
- index
- model
- condition
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种索引生成方法、装置、计算机设备和计算机可读存储介质,可以获取分析数据,分析数据为针对数据查询请求分析其对应的查询模型得到,分析数据包括至少一种查询模型,查询模型包括目标查询模型,查询模型包括查询条件,每个查询条件包括查询属性信息;根据目标查询模型的第一查询条件对应的每个查询属性信息的频次生成第一候选索引;根据目标查询模型的第二查询条件对应的目标查询属性信息的频次生成第二候选索引;根据第一候选索引和与目标查询模型的匹配度,以及第二候选索引的匹配度,从第一候选索引和第二候选索引中确定目标索引,该方案可以智能生成索引,自动对数据库的索引进行优化,提高数据库的响应速度。
Description
技术领域
本申请涉及通信技术领域,具体涉及一种索引生成方法、装置、计算机设备和计算机可读存储介质。
背景技术
索引是对数据库的数据表中一列或多列的数据进行排序的一种结构,使用索引可快速访问数据库表中的特定数据,数据库响应数据查询请求时,存在由于数据库中数据量过大,以及没有合适的索引等原因,导致花费较多时间才完成查找到数据查询请求所需要的数据,响应时间过长,响应时间超过一定时间(如超过100ms),则可以认为发生了慢查询。通常采用根据数据库提供的慢查询日志,人工分析发生慢查询的原因,并根据慢查询的原因手动创建合适的索引,以提高数据库的响应速度。
发明内容
本申请实施例提供一种索引生成方法、装置、计算机设备和存储介质,可以基于分析数据生成第一候选索引和第二候选索引,根据第一候选索引和第二候选索引的匹配度确定目标索引,可以实现智能生成索引,自动对数据库的索引进行优化,提高数据库的响应速度。
本申请实施例提供的一种索引生成方法,包括:
获取分析数据,所述分析数据为针对接收到的数据查询请求,分析其对应的查询模型得到,所述分析数据包括至少一种查询模型,所述查询模型包括目标查询模型,所述查询模型包括至少一个查询条件,每个查询条件包括至少一个查询属性信息;
根据所述分析数据中,目标查询模型的第一查询条件对应的每个查询属性信息的频次,生成与所述数据查询请求对应的数据库的第一候选索引;
根据所述分析数据中,所述目标查询模型的第二查询条件对应的目标查询属性信息的频次,生成所述数据库的第二候选索引;
根据所述第一候选索引与所述目标查询模型的匹配度,以及所述第二候选索引与所述目标查询模型的匹配度,从所述第一候选索引和所述第二候选索引中确定所述数据库的目标索引。
相应的,本申请实施例还提供的一种索引生成装置,包括:
数据获取单元,用于获取分析数据,所述分析数据为针对接收到的数据查询请求,分析其对应的查询模型得到,所述分析数据包括至少一种查询模型,所述查询模型包括目标查询模型,所述查询模型包括至少一个查询条件,每个查询条件包括至少一个查询属性信息;
第一索引生成单元,用于根据所述分析数据中,目标查询模型的第一查询条件对应的每个查询属性信息的频次,生成与所述数据查询请求对应的数据库的第一候选索引;
第二索引生成单元,用于根据所述分析数据中,所述目标查询模型的第二查询条件对应的目标查询属性信息的频次,生成所述数据库的第二候选索引;
目标索引确定单元,用于根据所述第一候选索引与所述目标查询模型的匹配度,以及所述第二候选索引与所述目标查询模型的匹配度,从所述第一候选索引和所述第二候选索引中确定所述数据库的目标索引。
相应的,本申请实施例还提供的一种计算机设备,包括存储器和处理器;所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的计算机程序,以执行本申请实施例提供的任一种索引生成方法。
相应的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器加载以执行本申请实施例提供的任一种索引生成方法。
本申请实施例可以获取分析数据,分析数据为针对接收到的数据查询请求,分析其对应的查询模型得到,分析数据包括至少一种查询模型,查询模型包括目标查询模型,查询模型包括至少一个查询条件,每个查询条件包括至少一个查询属性信息;根据分析数据中,目标查询模型的第一查询条件对应的每个查询属性信息的频次,生成与数据查询请求对应的数据库的第一候选索引;根据分析数据中,目标查询模型的第二查询条件对应的目标查询属性信息的频次,生成数据库的第二候选索引;根据第一候选索引与目标查询模型的匹配度,以及第二候选索引与目标查询模型的匹配度,从第一候选索引和第二候选索引中确定数据库的目标索引,该方案可以基于分析数据生成第一候选索引和第二候选索引,根据第一候选索引和第二候选索引的匹配度确定目标索引,可以实现智能生成索引,自动对数据库的索引进行优化,提高数据库的响应速度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的索引生成方法的场景图;
图2是本申请实施例提供的索引生成方法的流程图;
图3是本申请实施例提供的索引生成方法的另一流程图;
图4是本申请实施例提供的索引生成装置示意图;
图5是本申请实施例提供的终端的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种索引生成方法、装置、计算机设备和计算机可读存储介质。该索引生成装置可以集成在计算机设备中,该计算机设备可以是服务器,也可以是终端等设备。
其中,该终端可以包括手机、穿戴式智能设备、平板电脑、笔记本电脑、个人计算(PC,Personal Computer)、以及车载计算机等。
其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
终端可以包括手机、穿戴式智能设备、平板电脑、笔记本电脑、以及个人计算(PC,Personal Computer)等。
例如,如图1所示,索引生成方法可以通过索引生成***实现,索引生成***可以包括查询模型分析流程和索引生成流程。其中,查询模型分析流程数据可以是开放平台可以接收数据消费者发送的数据查询请求,比如可以是通过相应的应用程序、客户端应用、小程序等触发的数据查询请求,数据开放平台对接收到的数据查询请求进行分析,确定每个数据分析请求对应的查询模型,以及向业务数据库发送与数据查询请求对应的查询语句,以从业务数据库中查询数据,并记录数据库的响应时间,将业务数据库返回的查询结果发送给消费者。数据开放平台的平台缓存中存在分析数据查询请求对应的查询模型以及记录业务数据库响应时间得到的分析数据,平台缓存中的分析数据会定期向平台数据库落地,即将分析数据持久化,保存在平台数据库中。
索引生成流程可以是定期拉取分析数据,对分析数据进行筛选,从分析数据中筛选出目标查询模型,基于目标查询模型,从两个不同的查询条件出发,构造两个不同的候选索引:第一候选索引和第二候选索引,根据第一候选索引的匹配度和第二候选索引的匹配度,确定目标索引,并将目标索引创建至业务数据库中,为数据查询请求提供服务。该方案可以基于分析数据生成第一候选索引和第二候选索引,根据第一候选索引和第二候选索引的匹配度确定目标索引,可以实现智能生成索引,自动对数据库的索引进行优化,提高数据库的响应速度。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本实施例将从图像处理装置的角度进行描述,该图像处理装置具体可以集成在计算机设备中,该计算机设备可以是服务器,也可以是终端等设备;如图2所示,该索引生成方法的具体流程可以如下:
101、获取分析数据,分析数据为针对接收到的数据查询请求,分析其对应的查询模型得到,分析数据包括至少一种查询模型,查询模型包括目标查询模型,查询模型包括至少一个查询条件,每个查询条件包括至少一个查询属性信息。
其中,分析数据可以是针对接收到的数据查询请求进行分析,确定数据查询请求对应的查询模型得到的数据。
其中,查询属性信息可以是对应数据库中某个属性数据的信息,例如,查询属性信息为性别,则对应数据库中的性别数据,查询属性信息可以是查询字段,查询字段可以对应数据库中某一列数据,例如,查询字段为性别,则对应数据库中性别字段所在列的数据。
其中,查询条件可以是从数据库中获取数据的约束因素,查询条件可以包括排序条件和过滤条件。查询条件可以包括至少一个查询属性信息。
排序条件表示对数据库中的数据进行排序,例如,将用户数据表中的用户按年龄从高到低排序。
过滤条件表示对数据库中的数据进行过滤,从中筛选出需要的数据。过滤条件可以包括相等性条件(表示从数据库中查询与查询属性信息的条件值相等的数据,例如从数据库的用户数据中表中查询性别为男的用户,其中,查询属性信息为性别,条件值为男)、比较性条件(表示从数据库中查询大于/小于查询属性信息的条件值的数据,例如从用户数据表中查询考试总分>90分的用户,其中,查询属性信息为考试总分,条件值为90分)、包含性条件(表示从数据库中某个集合中查询与查询属性信息相符的部分数据,比如从用户数据表的科目中查询语文分数)以及地理位置条件(地理位置条件携带的查询属性信息为地理位置,表示从数据库中查询地理位置与查询属性信息的地理位置满足条件值的数据,例如从用户数据表中查询居住地在学校1km以内的用户)等。
其中,条件值可以是过滤条件的筛选数据的标准。
其中,查询模型可以是对数据查询请求进行分析,提取数据查询请求的特征,如查询条件(例如查询属性信息)等,得到的表征某一特定查询模式的数据查询请求的模型,例如,数据库中存在用户数据表,第一数据查询请求查询数据表中,年龄大于15岁的用户,第二数据查询请求查询用户数据表中,年龄大于20岁的用户,第一数据查询请求和第二数据查询请求的查询条件均为过滤条件以及查询条件中包含的查询属性信息相同,虽然条件值不同,但对数据表中的相同字段进行相同查询条件的查询,可以认为属于相同的查询模式,第一数据查询请求和第二数据查询请求属于同一查询模型。
比如,具体可以是从模型数据库中获取分析数据,模型数据库可以是与数据查询请求所查询的数据库为同一个是数据库,也可以是不同的数据库,在此不做限定。该分析数据还可以才可以在区块链中,计算机设备从区块链中获取对应的分析数据。
分析数据可以是通过对接收到数据查询请求进行分析得到的,在一实施例中,步骤“获取分析数据”,之前,该索引生成方法具体还可以包括:
接收针对数据库的数据查询请求;
基于数据查询请求携带的查询条件,以及查询条件包含的查询字段对数据查询请求进行分析处理,以确定数据查询请求对应的查询模型,并更新模型的命中次数,命中次数表示与查询模型对应的数据查询请求的数量;
根据查询模型以及查询模型的命中次数,生成分析数据。
其中,数据库可以时按照数据结构来组织、存储和管理数据的仓库,可以是一个长期存储在计算机内的、有组织的、可共享的、以及统一管理的大量数据的集合。
其中,命中次数可以表示一个查询模型被数据查询请求命中的次数,比如,若数据查询请求A经分析确定对应的查询模型为查询模型S,则查询模型S的命中次数+1,查询模型的命中次数的初始值为零,查询模型S中包含的查询条件为数据查询请求A中包含的查询条件,查询模型S中查询条件对应的查询属性信息为数据查询请求A中查询条件的属性信息。
比如,具体可以是对接收到的数据查询请求进行分析,通过数据查询请求包含的查询语句可以确定数据查询请求所要查询的数据库表和查询属性信息,以及根据查询语句中的运算符可以确定数据查询请求所包含的查询条件。例如,若数据查询请求中携带表示有条件地从数据库表中选取数据的语句,例如where子句,则该数据查询请求包括过滤性条件。根据语句中的运算符可以确定具体的过滤条件,例如携带的运算符为等于(=),该过滤性条件具体为相等性条件,携带的运算符为小于或者大于,该过滤性条件具体为比较性条件。若携带表示根据指定的数据进行排序的语句,例如order by子句,则该数据查询请求包括排序性条件。
根据查询请求中包含的查询条件,以及查询条件的查询属性信息确定查询请求对应的查询模型,若查询请求a中查询条件,以及查询条件对应的查询属性信息分别与查询模型a一一对应,则查询请求对应的查询模型为查询模型a。
若数据查询请求a和数据查询请求b包含的查询条件以及查询条件对应的查询属性信息一一对应,无论不同的查询条件在数据查询请求中出现的顺序是否相同,数据查询请求a与数据查询请求b对应的查询模型相同。
可选的,若排序性条件包含多个查询属性信息,多个查询属性信息存在查询顺序,当两个排序性条件包含的查询属性信息相同,且顺序一致时,认为两个排序性条件相同或者对应。
根据分析每个数据查询请求对应的查询模型,以及查询模型的命中次数可以生成分析数据,分析数据中包括至少一个查询模型,每个查询模型中包括至少一个查询条件,每个查询条件包括至少一个查询属性信息。
分析数据中每个查询模型还可以包括其对应的数据查询请求的响应时间,响应时间可以是计算机设备从接收到数据查询请求,到接收到数据库基于数据查询请求返回的数据,所需要的时间。在一实施例中,可以根据响应时间、查询模型的命中次数以及查询模型与数据库的当前索引的匹配度盲从查询模型中筛选出目标查询模型,即步骤“获取分析数据”之后,该索引生成方法还包括:
获取分析数据中,命中次数大于命中阈值的待处理查询模型;
针对每个待处理查询模型,根据待处理查询模型对应的每个查询请求的响应时间,计算待处理查询模型的平均响应时间;
针对每个待处理查询模型,将数据库的当前索引与待处理查询模型进行匹配,得到待处理查询模型的模型匹配度;
根据平均响应时间和模型匹配度,从待处理查询模型中确定目标查询模型。
其中,模型匹配度可以是表示数据库的当前索引与待处理查询模型的匹配程度的值,匹配度越低表示待处理模型对应的请求越难根据当前索引在数据库中快速查询到数据。
比如,具体可以是从分析数据中筛选出命中次数超过命中阈值的查询模型,命中阈值可以根据需要进行灵活设置,例如,可以是5000,将命中次数大于命中阈值的查询模型作为待处理查询模型。
当数据查询请求命中查询模型时,将该查询模型的命中次数+1,以及记录该数据查询请求的响应时间。
根据每个待处理查询模型对应的数据查询请求的响应时间,计算每个待处理查询模型对应的数据查询请求的平均响应时间,得到每个待处理模型的平均响应时间。
获取数据库的当前索引,即数据库已建立的索引,针对每个待处理查询模型,将待处理模型与每个当前索引进行匹配,得到待处理查询模型与每个当前索引的匹配度,根据待查询处理模型与每个当前索引的匹配度可以计算待处理查询模型的模型匹配度,例如根据待查询处理模型与每个当前索引的匹配度相加得到待处理查询模型的模型匹配度。
将平均响应时间大于第一阈值,且匹配度小于第二阈值的待处理查询模型确定为目标查询模型。
其中,待处理查询模型的平均响应时间大于第一阈值表示该待处理查询模型对应的查询请求发生了慢查询(慢查询:花费较多时间才完成查找到数据查询请求所需要的数据),待处理查询模型的匹配度小于第二阈值表示该待处理查询模型对应的数据查询请求由于没有合适的索引等原因,导致发生慢查询。
可选的,可以针对每个查询模型获取其对应的命中次数、平均响应时间以及模型匹配度,并根据命中次数、平均响应时间以及模型匹配度从分析数据中查询模型中确定目标查询模型,例如将命中次数大于命中阈值、平均响应时间大于第一阈值以及模型匹配度小于第二阈值的查询模型作为目标查询模型。
可选的,可以先筛选出命中次数大于命中阈值的待处理查询模型,在从待处理查询模型中筛选出平均响应时间大于第一阈值的待处理查询模型,再从中筛选出模型匹配度小于第二阈值的查询模型,得到目标查询模型。
待处理查询模型与当前索引的匹配度的计算方式可以参考步骤104中的相关过程,在此不做赘述。
102、根据分析数据中,目标查询模型的第一查询条件对应的每个查询属性信息的频次,生成与数据查询请求对应的数据库的第一候选索引。
其中,频次可以表示每个查询属性信息的出现次数。
其中,第一查询条件可以包括至少一个查询条件,例如,可以是排序条件或者是过滤条件,还可以是排序条件以及过滤条件等。
其中,第一候选索引可以是从第一查询条件出发构建的索引。
比如,具体可以是若第一查询条件包含一个查询条件,则将所有目标查询模型的第一查询条件对应的查询属性信息中,频次最高的查询属性信息确定为第一候选索引的索引信息,即第一候选索引可以表示为{key1},其中key1为频次最高的查询属性信息。
还可以根据频次将第一查询条件的预设数量的查询属性信息作为索引信息,例如,将第一查询条件对应的查询属性信息中,频次最高的两个查询属性信息确定为索引信息,生成第一候选索引,第一候选索引可以表示为{key1,key2},其中key1和key2为频次最高的两个查询属性信息。
若第一查询条件包含多个查询条件,则可以针对第一查询条件包含的每个查询条件,获取查询条件中频次符合条件(例如,频次最高或者频次满足一定阈值)的查询属性信息,根据每个查询条件的查询属性信息,生成第一候选索引。
在一实施例中,第一查询条件可以包括第一子查询条件和第二子查询条件,根据第二查询条件中第一子查询条件和第二子查询条件的查询属性信息确定索引信息,即在一实施例中,第一查询条件包括两个查询条件,第一子查询条件和第二子查询条件,步骤“根据分析数据中,目标查询模型的第一查询条件对应的每个查询属性信息的频次,生成与数据查询请求对应的数据库的第一候选索引”,具体可以是:
将分析数据的目标查询模型中,频次满足预设条件的第一子查询条件的查询属性信息,确定为第一索引信息;
若包含第一索引信息的目标查询模型中包括目标类型的第二子查询条件,则将目标类型的第二查询条件对应的查询属性信息,确定为第二索引信息;
根据第一索引信息和第二索引信息,生成与数据查询请求对应的数据库的第一候选索引。
其中,第一子查询条件可以是排序条件或者是过滤条件等。
其中,第二子查询条件可以包含多种类型的第二子查询条件,比如根据第二子查询条件中包含的查询属性信息的数量将第二查询条件区分为不同类型的第二子查询条件。
其中,目标类型的第二子查询条件可以是只包含一个查询属性信息的第二子查询条件。
比如具体可以是根据频次将第一子查询条件中预设数量的查询属性信息作为第一索引信息,即第一索引信息包括预设数量的查询属性信息。从目标查询模型中确定第一子查询条件的查询属性信息包含有第一索引信息的查询模型,是否存在目标类型的第二子查询条件,若存在,则将该目标类型的第二查询条件对应的查询属性信息作为第一候选索引的第二索引信息,若不存在,则第一候选索引仅包含第一索引信息。
在一实施例中,第一子查询条件可以是相等性条件,第二子查询条件可以是排序条件,从相等性条件对应的查询属性信息中,筛选出现次数最多的查询属性信息作为第一候选索引的索引信息,再从包含该出现次数最多的查询属性信息的目标查询模型中,获取只包含一个查询属性信息的排序条件,将该查询属性信息作为第一候选索引的索引信息,将根据相等性条件确定的索引信息以及排序条件确定的索引信息,生成第一候选索引。
103、根据分析数据中,目标查询模型的第二查询条件对应的目标查询属性信息的频次,生成数据库的第二候选索引。
其中,第二查询条件可以包括至少一个查询条件,例如,是排序条件或者是过滤条件,还可以是排序条件以及过滤条件等等。其中,第二候选索引可以是从第二查询条件出发构建的索引。
其中,目标查询属性信息可以是预设顺序的查询属性信息,例如,第二查询条件中第一个查询属性信息。
比如,具体可以是将目标查询模型的第二查询条件的第一个查询属性信息(即目标查询属性信息)中出现次数最多的目标查询属性信息作为第二候选索引的索引信息,根据该索引信息生成第二候选索引,例如,第二查询条件包含一个排序条件,将排序条件中的频次最高的第一个查询属性信息作为第二候选索引的索引信息,并生成第二候选索引,第二候选索引可以表示为{key0},key0为频次最高的第一个查询属性信息,若第二查询条件包含多个查询条件,可以针对第二查询条件包含的每个查询条件,根据目标模型中的频次最高目标查询属性信息的作为第二候选索引的索引信息,基于第二查询条件中每个条件对应的索引信息,生成第二候选索引,即第二候选索引中包含多个索引信息。
可以理解的是,除了将频次最高的目标查询属性信息作为索引信息之外,还可以是将出现次数满足预设阈值的目标查询属性信息作为索引信息。
在一实施例中,第二查询条件可以包括第三子查询条件和第四子查询条件,步骤“根据分析数据中,目标查询模型的第二查询条件对应的目标查询属性信息的频次,生成数据库的第二候选索引”,具体可以包括:
获取分析数据的目标查询模型中,第三子查询条件的目标查询顺序对应的每一个目标查询属性信息的频次;
根据频次满足预设条件的目标查询属性信息确定为第三索引信息;
若包含第三索引信息的目标查询模型中,第四子查询条件对应的查询属性信息中,存在相同的查询属性信息,则基于相同的查询属性信息,以及第三索引信息,生成第二候选索引。
其中,第三子查询条件包含的查询属性信息存在查询顺序,目标查询顺序可以是第一、第二或者是其他顺序,也可以是第一和第二以及其他的组合。
比如,具体可以是统计目标查询模型中,第三子查询条件的目标查询顺序对应的每一个目标查询属性信息的出现次数,将满足预设条件的目标查询属性确定第三索引信息,例如,将第三子查询条件中排序为第一的查询属性信息,即第三子查询条件的第一个查询属性信息中,出现次数最多的目标查询属性信息确定为第三索引信息。
进一步的还可以将查询顺序为第二个查询属性信息中,出现次数最多的目标查询属性信息确定为第三索引信息,即第三索引信息可以包含两个目标查询属性信息。
若包含第三索引信息的目标查询模型的第四子查询条件中均包含查询属性信息X,则将第三索引信息与查询属性信息X作为第二候选索引的索引信息,根据索引信息生成第二候选索引。
在一实施例中,第三子查询条件可以是排序条件,第四子查询条件可以是相等性条件,将排序条件的第一个查询属性信息(目标排序条件为第一的查询属性信息)中,出现次数最多的查询属性信息作为第三索引信息,从目标查询模型中筛选第三子查询条件的第一个查询属性信息包含该第三索引信息的目标查询模型,若筛选得到的目标查询模型的相等性条件中,均包含相同的查询属性信息,则根据该相同的属性信息和第三索引信息,生成第二候选索引。
104、根据第一候选索引与目标查询模型的匹配度,以及第二候选索引与目标查询模型的匹配度,从第一候选索引和第二候选索引中确定数据库的目标索引。
其中,匹配度可以是表示第一候选索引或者第二候选索引与目标查询模型的匹配程度。
比如,具体可以是将匹配度高的候选索引作为目标索引,并将该目标索引创建至数据库中。
在一实施例中,可以根据目标查询模型的查询属性信息与第一候选索引或者第二候选索引的索引信息进行匹配,计算第一候选索引或者第二候选索引的匹配度,即步骤“根据第一候选索引与目标查询模型的匹配度,以及第二候选索引与目标查询模型的匹配度,从第一候选索引和第二候选索引中确定数据库的目标索引”之后,该索引生成方法还可以包括:
针对每一个目标查询模型,将目标查询模型中每个查询条件包含的查询属性信息与第一候选索引包含的索引信息进行匹配,以计算第一候选索引与目标查询模型之间的初始匹配度;
针对每一个目标查询模型,将目标查询模型中每个查询条件包含的查询属性信息与第二候选索引包含的索引信息进行匹配,以计算第二候选索引与目标查询模型之间的初始匹配度;
将每个目标查询模型的命中次数以及与第一候选索引之间的初始匹配度进行点乘处理,以对目标查询模型的初始匹配度进行加权求和,得到第一候选索引的匹配度;
将每个目标查询模型的命中次数以及与第二候选索引之间的初始匹配度进行点乘处理,以对目标查询模型的初始匹配度进行加权求和,得到所述第二候选索引的匹配度。
比如,具体可以是目标查询模型中每个查询条件设置对应的分数,针对每一个目标查询模型,将目标查询模型中每个查询条件与第一候选索引中相同的查询条件进行匹配,若二者相同,则第一候选索引获得该查询条件对应的分数,将第一候选索引在每个查询条件下的分数相加可以得到第一候选索引与目标查询模型之间的初始匹配度。根据每个目标查询模型的命中次数对该初始匹配度进行加权求和处理,得到第一候选索引的匹配度。
第二候选索引的匹配度计算方式可以参考第一候选索引的匹配度计算方式,在此不做赘述。
在一实施例中,可以对目标查询模型的第一查询条件设置对应的分值,当第一候选索引中的索引信息每次命中目标查询模型的第一查询条件中的查询属性信息时,根据预设规则从对应的分值中获取一定的分值,即步骤“针对每个目标查询模型,将目标查询模型中每个查询条件包含的查询属性信息与第一候选索引包含的索引信息进行匹配,以计算第一候选索引与目标查询模型之间的初始匹配度”,具体可以是:
从第一候选索引包含的索引信息中确定目标索引信息;
针对每个目标查询模型,若目标索引信息与目标查询模型中,第一查询条件对应的查询属性信息相同,则根据目标索引信息计算第一候选索引与目标查询模型在第一查询条件下的初始匹配度;
将目标索引信息的关联索引信息确定为目标索引信息,返回执行针对每个目标查询模型,若目标索引信息与目标查询模型中,第一查询条件对应的查询属性信息相同,则根据目标索引信息计算第一候选索引与目标查询模型在第一查询条件下的初始匹配度,直到目标索引信息为预设索引信息,得到在第一查询条件下的多个初始匹配度;
根据在第一查询条件下的多个初始匹配度,计算第一候选索引与目标查询模型之间的初始匹配度。
其中,关联索引信息可以是在顺序上,目标索引信息的下一个索引信息。
比如,具体可以是针对每个目标查询模型,对目标查询模型的第一查询条件设置对应的分值,获取第一候选索引中的第一个索引信息,将第一个索引信息确定为目标索引信息,若目标索引信息与目标查询模型中的第一查询条件中的查询属性信息相同,则从第一查询条件对应的分值中取一半分值,得到第一候选索引与目标查询模型在第一查询条件下的初始匹配度。对应的第一查询条件对应的分值减少一半。
将目标索引信息的下一个索引信息确定为目标索引信息,返回执行上述计算第一候选索引与目标查询模型在第一查询条件下的初始匹配度,可以得到多个在第一查询条件下的初始匹配度,将多个初始相似度相加,可以得到在第一查询条件下,第一候选索引与目标查询模型之间的初始匹配度。
根据每个查询条件下,第一候选索引与目标查询模型之间的初始相似度可以得到第一候选索引与目标查询模型之间的第一初始匹配度。
由上可知,本申请实施例可以获取分析数据,分析数据为针对接收到的数据查询请求,分析其对应的查询模型得到,分析数据包括至少一种查询模型,查询模型包括目标查询模型,查询模型包括至少一个查询条件,每个查询条件包括至少一个查询属性信息;根据分析数据中,目标查询模型的第一查询条件对应的每个查询属性信息的频次,生成与数据查询请求对应的数据库的第一候选索引;根据分析数据中,目标查询模型的第二查询条件对应的目标查询属性信息的频次,生成数据库的第二候选索引;根据第一候选索引与目标查询模型的匹配度,以及第二候选索引与目标查询模型的匹配度,从第一候选索引和第二候选索引中确定数据库的目标索引,该方案可以基于分析数据生成第一候选索引和第二候选索引,根据第一候选索引和第二候选索引的匹配度确定目标索引,可以实现智能生成索引,自动对数据库的索引进行优化,提高数据库的响应速度。
在上述实施例的基础上,下面将举例做进一步详细说明。
本实施例将从索引生成装置的角度,以查询属性信息为查询字段、索引信息为关键字段、第一查询条件为相等性条件、以及第二查询条件为排序条件为例进行描述,该索引生成装置具体可以集成在计算机设备中,该计算机设备可以是服务器。
本申请实施例提供的一种索引生成方法,如图3所示,该索引生成方法的具体流程可以如下:
201、对针对数据库的数据查询请求进行分析,确定数据查询请求对应的查询模型,以得到分析数据。
比如,具体可以是对接收到的数据查询请求进行分析,通过数据查询请求包含的查询语句可以确定数据查询请求所要查询的数据库表和查询字段,以及根据查询语句中的运算符可以确定数据查询请求所包含的查询条件。例如,若数据查询请求中携带表示有条件地从数据库表中选取数据的语句,例如where子句,则该数据查询请求包括过滤性条件。根据语句中的运算符可以确定具体的过滤条件,例如携带的运算符为等于(=),该过滤性条件具体为相等性条件,携带的运算符为小于或者大于,该过滤性条件具体为比较性条件。若携带表示根据指定的数据进行排序的语句,例如order by子句,则该数据查询请求包括排序性条件。
根据查询请求中包含的查询条件,以及查询条件的查询字段确定查询请求对应的查询模型,若查询请求a中查询条件,以及查询条件对应的查询字段分别与查询模型a一一对应,则查询请求对应的查询模型为查询模型a。
若数据查询请求a和数据查询请求b包含的查询条件以及查询条件对应的查询字段一一对应,无论不同的查询条件在数据查询请求中出现的顺序是否相同,数据查询请求a与数据查询请求b对应的查询模型相同。
若排序性条件包含多个查询字段,多个查询字段存在查询顺序,当两个排序性条件包含的查询字段相同,且顺序一致时,认为两个排序性条件相同或者对应。
当数据查询请求命中查询模型时,将该查询模型的命中次数+1,以及记录数据库响应该数据查询请求的响应时间。根据每个数据查询请求对应的查询模型、响应时间、以及查询模型的命中次数可以生成分析数据,分析数据中包括至少一个查询模型,每个查询模型中包括至少一个查询条件,每个查询条件包括至少一个查询字段。
202、从分析数据中筛选目标查询模型。
比如,具体可以是定期(例如每月或者每周,或者是当积累了一定数量的分析数据时)获取分析数据,从分析数据中筛选出命中次数超过命中阈值的查询模型,命中阈值可以根据需要进行灵活设置,例如,可以是5000,将命中次数大于命中阈值的查询模型作为待处理查询模型。
根据每个待处理查询模型对应的数据查询请求的响应时间,计算每个待处理查询模型对应的数据查询请求的平均响应时间,得到每个待处理模型的平均响应时间。
获取数据库的当前索引,即数据库已建立的索引,针对每个待处理查询模型,将待处理模型与每个当前索引进行匹配,得到待处理查询模型与每个当前索引的匹配度,根据待查询处理模型与每个当前索引的匹配度可以计算待处理查询模型的模型匹配度,例如根据待查询处理模型与每个当前索引的匹配度进行相加得到待处理查询模型的模型匹配度。
每个当前索引与待处理查询模型之间的匹配度可以参考步骤207中计算第一候选索引和目标查询模型之间的匹配度的方法,在此不做赘述。
可选的,当待处理查询模型的相等性条件或者包含性条件与当前索引中的唯一索引匹配时,表示该待处理查询模型不为目标模型,结束计算匹配度过程;若存在一个当前索引与排序条件匹配时,表示该待处理查询模型不为目标模型,结束计算匹配度过程;若待处理查询模型中存在地理位置条件,且不存在排序条件时,可以对该查询条件的初始匹配度增加附加分值,保证地理位置条件在有对应的索引的情况下,不再创建新的索引。
将平均响应时间大于第一阈值(例如1秒),且匹配度小于第二阈值(例如20)的待处理查询模型确定为目标查询模型。
203、根据目标查询模型中,相等性条件对应的每个查询字段的出现次数,确定第一候选索引的第一关键字段。
比如,具体可以是统计所述目标查询模型的第一查询条件对应的每个查询字段的出现次数,将所有目标查询模型的第一查询条件对应的查询字段中,出现次数最多的查询字段确定为第一候选索引的第一关键字段。
204、若包含第一候选索引的第一关键字段的目标查询模型中存在目标排序条件,则根据第一关键字段以及目标排序条件的查询字段生成第一候选索引。
其中,目标排序条件可以是包含单一查询字段的排序性条件。
若相等性条件对应的查询字段中包含有第一关键字段的目标查询模型中,存在单一查询字段的排序性条件,将该单一查询字段的排序性条件对应的查询字段作为第一候选索引的第二关键字段,第一候选索引可以表示为{key11,key12},其中key11为出现次数最多的查询字段,key12为单一查询字段的排序性条件对应的查询字段,若不存在单一查询字段的排序性条件,则第一候选索引只包括第一关键字段,可以表示为{key11}。
205、根据目标查询模型中,排序条件中的目标查询顺序的查询字段的出现次数,确定第二候选索引的第一关键字段。
比如,具体可以是排序条件中查询字段具有查询顺序,例如数据查询请求的排序条件为根据姓名、年龄、以及分数进行排序,姓名则为第一个查询字段,年龄则为第二个查询字段,分数为第三个查询字段,以此类推。统计每个目标查询模型的排序条件中,第一个查询字段(为了区分可以称为第一查询字段)的出现次数,以及统计第二个查询字段(为了区分可以称为第二查询字段)的出现次数,将出现次数最多的第一查询字段和出现次数最多的第二查询字段确定为第二候选索引的第一关键字段。第一关键字段包括两个关键字段,分别为为key21和key22。其中,key21为出现次数最多的第一查询字段,key22为出现次数最多的第二查询字段。
如果所有目标查询模型的排序条件均为包含单一查询字段的排序条件,且不存在出现次数最多的第二查询字段,则第二候选索引的第一关键字段为key21。
206、若包含第二候选索引的第一关键字段的目标查询请求的相等性条件中,存在相同的查询字段,则根据第一关键字段和相同的查询字段生成第二候选索引。
若排序条件的第一个查询字段以及第二查询字段分别包含对应的第一关键字段的目标查询模型的相等性条件中均包含同一个查询字段X,将该查询字段X确定为第二候选索引的第二关键字段,根据第一关键字段和第二关键字段生成第二候选索引,第二候选索引可以表示为{key21,key22,key23},其中,key21为出现次数最多的第一查询字段,key22为出现次数最多的第二查询字段,key23为查询字段X。
可以理解的是,若包含第一关键字段的目标查询模型的相等性条件中不包含同一个查询字段X,则第二候选索引可以表示为{key21,key22},其中,key21为出现次数最多的第一查询字段,key22为出现次数最多的第二查询字段。
如果所有目标查询模型的排序条件均为包含单一查询字段的排序条件,则不存在出现次数最多的第二查询字段,且包含第一关键字段的目标查询模型的相等性条件中不包含同一个查询字段X,第二候选索引可以表示为{key21},其中,key1为出现次数最多的第一查询字段。
若包含第一关键字段的目标查询模型的相等性条件中均包含同一个查询字段X,不存在出现次数最多的第二查询字段,则第二候选索引可以表示为{key21,key23},其中,key21为出现次数最多的第一查询字段,key23为查询字段X。
207、计算第一候选索引和目标查询模型之间的匹配度,以及第二候选索引和目标查询模型之间的匹配度。
比如,具体可以是对目标查询模型中每个查询条件设置对应的分值,针对每一个目标查询模型,将目标查询模型中每个查询条件与第一候选索引中相同的查询条件进行匹配,若二者相同,则第一候选索引获得该查询条件下对应的分值,将第一候选索引在每个查询条件下的分值相加可以得到第一候选索引与目标查询模型之间的初始匹配度。根据目标查询模型的命中次数对该初始匹配度进行加权,得到第一候选索引的匹配度。
例如,可以设置过滤条件的分值为50分,排序条件的分值为40分。计算相等性条件下的第一候选索引与目标查询模型之间初始匹配度,具体地,若第一候选索引为唯一索引,针对每个目标查询模型,如果目标查询模型的相等性条件或者包含性条件中与第一候选索引匹配,第一候选索引与该目标查询模型为完美匹配,初始匹配度为100。
若第一候选索引不为唯一索引,可以是针对每个目标查询模型,将第一候选索引的每个关键字段与目标查询模型的相等性条件对应的查询字段进行匹配,若有一个关键字段与查询字段匹配(相同),则获取过滤条件对应分值(50)的一半(25),并相应地,将过滤条件的分值减半(25),若有其他关键字段与查询字段相同,则获取过滤条件对应分值(25)的一半(12.5),此时,第一候选索引与该目标查询模型之间的初始匹配度为25+12.5=37.5。以此类推,直到第一候选索引中没有关键字段与查询字段匹配,得到第一候选索引与该目标查询模型之间在相等性条件下的初始匹配度。
其他的过滤条件的查询字段如果与第一候选索引的一个关键字段匹配,则该过滤条件下的初始匹配度为10。
若第一候选索引的关键字段,以及关键字段的字段顺序与目标查询模型的排序条件相同,则第一候选索引与该目标查询模型之间的初始匹配度为40,否则,初始匹配度为0。
根据第一候选索引与目标查询模型在每个条件下的初始匹配度可以确定第一候选索引与目标查询模型之间的初始匹配度。
针对每个目标查询模型进行相同的处理,可以得到每个目标查询模型与第一候选索引之间的初始匹配度。
根据每个目标查询模型的命中次数对目标查询模型与第一候选索引之间的初始匹配度进行加权求和处理,得到第一候选索引的匹配度。
第二候选索引的匹配度计算方式可以参考第一候选索引的匹配度计算方式,在此不做赘述。
208、根据第一候选索引和目标查询模型之间的匹配度,以及第二候选索引和目标查询模型之间的匹配度,确定目标索引。
比如,具体可以是将匹配度高的候选索引作为目标索引,并将该目标索引创建至数据库中。
由上可知,本申请实施例通过对针对数据库的数据查询请求进行分析,确定数据查询请求对应的查询模型,以得到分析数据,从分析数据中筛选目标查询模型;根据目标查询模型中,相等性条件对应的每个查询字段的出现次数,确定第一候选索引的第一关键字段;若包含第一候选索引的第一关键字段的目标查询模型中存在目标排序条件,则根据第一关键字段以及目标排序条件的查询字段生成第一候选索引;根据目标查询模型中,排序条件中的目标查询顺序的查询字段的出现次数,确定第二候选索引的第一关键字段;若包含第二候选索引的第一关键字段的目标查询请求的相等性条件中,存在相同的查询字段,则根据第一关键字段和相同的查询字段生成第二候选索引;计算第一候选索引和目标查询模型之间的匹配度,以及第二候选索引和目标查询模型之间的匹配度;根据第一候选索引和目标查询模型之间的匹配度,以及第二候选索引和目标查询模型之间的匹配度,确定目标索引;该方案可以基于分析数据生成第一候选索引和第二候选索引,根据第一候选索引和第二候选索引的匹配度确定目标索引,可以实现智能生成索引,自动对数据库的索引进行优化,提高数据库的响应速度。
为了便于更好地实施本申请实施例提供的索引生成方法,在一实施例中还提供了一种索引生成装置。其中名词的含义与上述索引生成方法中相同,具体实现细节可以参考方法实施例中的说明。
该索引生成装置具体可以集成在计算机设备中,如图4所示,该索引生成装置可以包括:数据获取单元301、第一索引生成单元302、第二索引生成单元303和目标索引确定单元304,具体如下:
数据获取单元301:用于获取分析数据,分析数据为针对接收到的数据查询请求,分析其对应的查询模型得到,分析数据包括至少一种查询模型,查询模型包括目标查询模型,查询模型包括至少一个查询条件,每个查询条件包括至少一个查询属性信息。
比如,具体可以是从模型数据库中获取分析数据,模型数据库可以是与数据查询请求所查询的数据库为同一个是数据库,也可以是不同的数据库,在此不做限定。该分析数据还可以才可以在区块链中,计算机设备从区块链中获取对应的分析数据。
可选的,该索引生成装置还可以包括接收单元、分析单元、以及数据生成单元,具体地:
接收单元:用于接收针对数据库的数据查询请求;
分析单元:用于基于数据查询请求携带的查询条件,以及查询条件包含的查询属性信息对数据查询请求进行分析处理,以确定数据查询请求对应的查询模型,并更新模型的命中次数,命中次数表示与查询模型对应的数据查询请求的数量;
数据生成单元:用于根据查询模型以及查询模型的命中次数,生成分析数据。
比如,具体可以是对接收到的数据查询请求进行分析,通过数据查询请求包含的查询语句可以确定数据查询请求所要查询的数据库表和查询属性信息,以及根据查询语句中的运算符可以确定数据查询请求所包含的查询条件。例如,若数据查询请求中携带表示有条件地从数据库表中选取数据的语句,例如where子句,则该数据查询请求包括过滤性条件。根据语句中的运算符可以确定具体的过滤条件,例如携带的运算符为等于(=),该过滤性条件具体为相等性条件,携带的运算符为小于或者大于,该过滤性条件具体为比较性条件。若携带表示根据指定的数据进行排序的语句,例如order by子句,则该数据查询请求包括排序性条件。
根据查询请求中包含的查询条件,以及查询条件的查询属性信息确定查询请求对应的查询模型,若查询请求a中查询条件,以及查询条件对应的查询属性信息分别与查询模型a一一对应,则查询请求对应的查询模型为查询模型a。
若数据查询请求a和数据查询请求b包含的查询条件以及查询条件对应的查询属性信息一一对应,无论不同的查询条件在数据查询请求中出现的顺序是否相同,数据查询请求a与数据查询请求b对应的查询模型相同。
可选的,若排序性条件包含多个查询属性信息,多个查询属性信息存在查询顺序,当两个排序性条件包含的查询属性信息相同,且顺序一致时,认为两个排序性条件相同或者对应。
根据分析每个数据查询请求对应的查询模型,以及查询模型的命中次数可以生成分析数据,分析数据中包括至少一个查询模型,每个查询模型中包括至少一个查询条件,每个查询条件包括至少一个查询属性信息。
可选的,该索引生成装置还可以包括获取单元、计算单元、匹配单元以及确定单元,具体地:
获取单元:用于获取分析数据中,命中次数大于命中阈值的待处理查询模型;
计算单元:用于针对每个待处理查询模型,根据待处理查询模型对应的每个查询请求的响应时间,计算待处理查询模型的平均响应时间;
匹配单元:用于针对每个待处理查询模型,将数据库的当前索引与待处理查询模型进行匹配,得到待处理查询模型的模型匹配度;
确定单元:用于根据平均响应时间和模型匹配度,从待处理查询模型中确定目标查询模型。
比如,具体可以是从分析数据中筛选出命中次数超过命中阈值的查询模型,命中阈值可以根据需要进行灵活设置,例如,可以是5000,将命中次数大于命中阈值的查询模型作为待处理查询模型。
当数据查询请求命中查询模型时,将该查询模型的命中次数+1,同时记录该数据查询请求的响应时间。
根据每个待处理查询模型对应的数据查询请求的响应时间,计算每个待处理查询模型对应的数据查询请求的平均响应时间,得到每个待处理模型的平均响应时间。
获取数据库的当前索引,即数据库已建立的索引,针对每个待处理查询模型,将待处理模型与每个当前索引进行匹配,得到待处理查询模型与每个当前索引的匹配度,根据待查询处理模型与每个当前索引的匹配度可以计算待处理查询模型的模型匹配度,例如根据待查询处理模型与每个当前索引的匹配度计算平均值,将平均值作为待处理查询模型的模型匹配度。
将平均响应时间大于第一阈值,且匹配度小于第二阈值的待处理查询模型确定为目标查询模型。
其中,待处理查询模型的平均响应时间大于第一阈值表示该待处理查询模型对应的查询请求发生了慢查询(慢查询:花费较多时间才完成查找到数据查询请求所需要的数据),待处理查询模型的匹配度小于第二阈值表示该待处理查询模型对应的数据查询请求由于没有合适的索引等原因,导致发生慢查询。
可选的,可以针对每个查询模型获取其对应的命中次数、平均响应时间以及模型匹配度,并根据命中次数、平均响应时间以及模型匹配度从分析数据中查询模型中确定目标查询模型,例如将命中次数大于命中阈值、平均响应时间大于第一阈值以及模型匹配度小于第二阈值的查询模型作为目标查询模型。
可选的,可以先筛选出命中次数大于命中阈值的待处理查询模型,在从待处理查询模型中筛选出平均响应时间大于第一阈值的待处理查询模型,再从中筛选出模型匹配度小于第二阈值的查询模型,得到目标查询模型。
待处理查询模型与当前索引的匹配度的计算方式可以参考步骤104中的相关过程,在此不做赘述。
第一索引生成单元302:用于根据分析数据中,目标查询模型的第一查询条件对应的每个查询属性信息的频次,生成与数据查询请求对应的数据库的第一候选索引。
比如,具体可以是将所有目标查询模型的第一查询条件对应的查询属性信息中,频次最高的查询属性信息确定为第一候选索引的索引信息,即第一候选索引可以表示为{key1},其中key1为频次最高的查询属性信息。
还可以根据频次将第一查询条件的预设数量的查询属性信息作为索引信息,例如,将第一查询条件对应的查询属性信息中,频次最高的两个查询属性信息确定为索引信息,生成第一候选索引,第一候选索引可以表示为{key1,key2},其中key1和key2为频次最高的两个查询属性信息。
可选的,第一索引生成单元302可以包括第一确定模块、第二确定模块以及第一生成模块,具体地:
第一确定模块:用于将分析数据的目标查询模型中,频次满足预设条件的第一子查询条件的查询属性信息,确定为第一索引信息;
第二确定模块:用于若包含第一索引信息的目标查询模型中包括目标类型的第二子查询条件,则将目标类型的第二查询条件对应的查询属性信息,确定为第二索引信息;
第一生成模块:用于根据第一索引信息和第二索引信息,生成与数据查询请求对应的数据库的第一候选索引。
比如具体可以是根据频次将第一子查询条件的预设数量的查询属性信息作为第一索引信息,即第一索引信息包括预设数量的查询属性信息。从目标查询模型中确定第一子查询条件的查询属性信息包含有第一索引信息的查询模型,是否存在目标类型的第二子查询条件,若存在,则将该目标类型的第二子查询条件对应的查询属性信息作为第一候选索引的第二索引信息,若不存在,则第一候选索引仅包含第一索引信息。
第二索引生成单元303:用于根据分析数据中,目标查询模型的第二查询条件对应的目标查询属性信息的频次,生成数据库的第二候选索引。
比如,具体可以是将目标查询模型的第二查询条件的第一个查询属性信息(即目标查询属性信息)中出现次数最多的目标查询属性信息作为第二候选索引的索引信息,根据该索引信息生成第二候选索引。
可选的,第二索引生成单元303可以包括获取模块、第三确定模块以及第二生成模块,具体地:
获取模块:用于获取分析数据的目标查询模型中,第三子查询条件的目标查询顺序对应的每一个目标查询属性信息的频次;
第三确定模块:用于根据频次满足预设条件的目标查询属性信息确定为第三索引信息;
第二生成模块:用于若包含第三索引信息的目标查询模型中,第四子查询条件对应的查询属性信息中,存在相同的查询属性信息,则基于相同的查询属性信息,以及第三索引信息,生成第二候选索引。
比如,具体可以是统计目标查询模型中,第三子查询条件的目标查询顺序对应的每一个目标查询属性信息的出现次数,将满足预设条件的目标查询属性确定第三索引信息,例如,将第二查询条件中第一个查询属性信息中,出现次数的目标查询属性信息确定为第三索引信息。
进一步的还可以将第二个查询属性信息中,出现次数最多的目标查询属性信息确定为第三索引信息,即第三索引信息两个目标查询属性信息。
若包含第三索引信息的目标查询模型的第四子查询条件中均包含查询属性信息X,则将第三索引信息与查询属性信息X作为第二候选索引的索引信息,根据索引信息生成第二候选索引。
目标索引确定单元304:用于根据第一候选索引与目标查询模型的匹配度,以及第二候选索引与目标查询模型的匹配度,从第一候选索引和第二候选索引中确定数据库的目标索引。
比如,具体可以是将匹配度高的候选索引作为目标索引,将将该目标索引创建至数据库中。
可选的,目标索引确定单元304可以包括匹配模块和处理模块,具体地:
匹配模块:用于针对每一个查询模型,将查询模型中每个查询条件包含的查询属性信息与第一候选索引包含的索引信息进行匹配,以计算第一候选索引与查询模型之间的匹配度;
处理模块:用于根据每个查询模型的命中次数,对查询模型与第一候选索引之间的初始匹配度进行加权处理,得到第一候选索引的匹配度。
比如,具体可以是目标查询模型中每个查询条件可以对应不同的分数,针对每一个目标查询模型,将目标查询模型中每个查询条件与第一候选索引中相同的查询条件进行匹配,若二者相同,则第一候选索引获得该查询条件对应的分数,将第一候选在每个查询条件下的分数相加可以得到第一候选索引与目标查询模型之间的初始匹配度。根据目标查询模型的命中次数对该初始匹配度进行加权,得到第一候选索引的匹配度。
第二候选索引的匹配度计算方式同第一候选索引的匹配度计算方式,在此不做赘述。
可选的,匹配模块可以包括第一确定子模块、第一计算子模块、第二确定子模块以及第二计算子模块,具体地:
第一确定子模块:用于从第一候选索引包含的索引信息中确定目标索引信息;
第一计算子模块:用于针对每个目标查询模型,若目标索引信息与目标查询模型中,第一查询条件对应的查询属性信息相同,则根据目标索引信息计算第一候选索引与目标查询模型在第一查询条件下的初始匹配度;
第二确定子模块:用于将目标索引信息的关联索引信息确定为目标索引信息,返回执行针对每个目标查询模型,若目标索引信息与目标查询模型中,第一查询条件对应的查询属性信息相同,则根据目标索引信息计算第一候选索引与目标查询模型在第一查询条件下的初始匹配度,直到目标索引信息为预设索引信息,得到在第一查询条件下的多个初始匹配度;
第二计算子模块:用于根据在第一查询条件下的多个初始匹配度,计算第一候选索引与目标查询模型之间的初始匹配度。
比如,具体可以是针对每个目标查询模型,对目标查询模型的第一查询条件设置对应的分值,获取第一候选索引中的第一个索引信息,将第一个索引信息确定为目标索引信息,若目标索引信息与目标查询模型中的第一查询条件中的查询属性信息相同,则从第一查询条件对应的分值中取一半分值,得到第一候选索引与目标查询模型在第一查询条件下的初始匹配度。对应的第一查询条件对应的分值减少一半。
将目标索引信息的下一个索引信息确定为目标索引信息,返回执行上述计算第一候选索引与目标查询模型在第一查询条件下的初始匹配度,可以得到多个在第一查询条件下的初始匹配度,将多个初始相似度相加,可以得到在第一查询条件下,第一候选索引与目标查询模型之间的初始匹配度。
根据每个查询条件下,第一候选索引与目标查询模型之间的初始相似度可以得到第一候选索引与目标查询模型之间的第一初始匹配度。
由上可知,本申请实施例索引生成装置可以通过数据获取单元301获取分析数据,分析数据为针对接收到的数据查询请求,分析其对应的查询模型得到,分析数据包括至少一种查询模型,查询模型包括目标查询模型,查询模型包括至少一个查询条件,每个查询条件包括至少一个查询属性信息;由第一索引生成单元302根据分析数据中,目标查询模型的第一查询条件对应的每个查询属性信息的频次,生成与数据查询请求对应的数据库的第一候选索引;由第二索引生成单元303根据分析数据中,目标查询模型的第二查询条件对应的目标查询属性信息的频次,生成数据库的第二候选索引;最后通过目标索引确定单元304根据第一候选索引与目标查询模型的匹配度,以及第二候选索引与目标查询模型的匹配度,从第一候选索引和第二候选索引中确定数据库的目标索引,该方案可以基于分析数据生成第一候选索引和第二候选索引,根据第一候选索引和第二候选索引的匹配度确定目标索引,可以实现智能生成索引,自动对数据库的索引进行优化,提高数据库的响应速度。
本申请实施例还提供一种计算机设备,该计算机设备可以是终端,也可以是服务器,如图5所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器1001、一个或一个以上计算机可读存储介质(也可以称为存储介质)的存储器1002、电源1003和输入单元1004等部件。本领域技术人员可以理解,图5中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器1001是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器1002内的软件程序和/或模块,以及调用存储在存储器1002内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器1001可包括一个或多个处理核心;优选的,处理器1001可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和计算机程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1001中。
存储器1002可用于存储软件程序以及模块,处理器1001通过运行存储在存储器1002的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器1002可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的计算机程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器1002可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1002还可以包括存储器控制器,以提供处理器1001对存储器1002的访问。
计算机设备还包括给各个部件供电的电源1003,优选的,电源1003可以通过电源管理***与处理器1001逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源1003还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该计算机设备还可包括输入单元1004,该输入单元1004可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器1001会按照如下的指令,将一个或一个以上的计算机程序的进程对应的可执行文件加载到存储器1002中,并由处理器1001来运行存储在存储器1002中的计算机程序,从而实现各种功能,如下:
获取分析数据,分析数据为针对接收到的数据查询请求,分析其对应的查询模型得到,分析数据包括至少一种查询模型,查询模型包括目标查询模型,查询模型包括至少一个查询条件,每个查询条件包括至少一个查询属性信息;
根据分析数据中,目标查询模型的第一查询条件对应的每个查询属性信息的频次,生成与数据查询请求对应的数据库的第一候选索引;
根据分析数据中,目标查询模型的第二查询条件对应的目标查询属性信息的频次,生成数据库的第二候选索引;
根据第一候选索引与目标查询模型的匹配度,以及第二候选索引与目标查询模型的匹配度,从第一候选索引和第二候选索引中确定数据库的目标索引。
以上各个操作的具体实施可参见前面的实施例,在此不作赘述。
由上可知,本申请实施例的计算机设备可以获取分析数据,分析数据为针对接收到的数据查询请求,分析其对应的查询模型得到,分析数据包括至少一种查询模型,查询模型包括目标查询模型,查询模型包括至少一个查询条件,每个查询条件包括至少一个查询属性信息;根据分析数据中,目标查询模型的第一查询条件对应的每个查询属性信息的频次,生成与数据查询请求对应的数据库的第一候选索引;根据分析数据中,目标查询模型的第二查询条件对应的目标查询属性信息的频次,生成数据库的第二候选索引;根据第一候选索引与目标查询模型的匹配度,以及第二候选索引与目标查询模型的匹配度,从第一候选索引和第二候选索引中确定数据库的目标索引,该方案可以基于分析数据生成第一候选索引和第二候选索引,根据第一候选索引和第二候选索引的匹配度确定目标索引,可以实现智能生成索引,自动对数据库的索引进行优化,提高数据库的响应速度。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中各种可选实现方式中提供的方法。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过计算机程序来完成,或通过计算机程序控制相关的硬件来完成,该计算机程序可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有计算机程序,该计算机程序,能够被处理器进行加载,以执行本申请实施例所提供的任一种索引生成方法。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种索引生成方法,因此,可以实现本申请实施例所提供的任一种索引生成方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种索引生成方法、装置、计算机设备和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种索引生成方法,其特征在于,包括:
获取分析数据,所述分析数据为针对接收到的数据查询请求,分析其对应的查询模型得到,所述分析数据包括至少一种查询模型,所述查询模型包括目标查询模型,所述查询模型包括至少一个查询条件,每个查询条件包括至少一个查询属性信息;
根据所述分析数据中,所述目标查询模型的第一查询条件对应的每个查询属性信息的频次,生成与所述数据查询请求对应的数据库的第一候选索引;
根据所述分析数据中,所述目标查询模型的第二查询条件对应的目标查询属性信息的频次,生成所述数据库的第二候选索引;
根据所述第一候选索引与所述目标查询模型的匹配度,以及所述第二候选索引与所述目标查询模型的匹配度,从所述第一候选索引和所述第二候选索引中确定所述数据库的目标索引。
2.根据权利要求1所述的方法,其特征在于,所述第一查询条件包括第一子查询条件和第二子查询条件,所述第二子查询条件包括多种类型的第二子查询条件,所述根据所述分析数据中,所述目标查询模型的第一查询条件对应的每个查询属性信息的频次,生成与所述数据查询请求对应的数据库的第一候选索引,包括:
将所述分析数据的目标查询模型中,频次满足预设条件的第一子查询条件的查询属性信息,确定为第一索引信息;
若包含所述第一索引信息的目标查询模型中包括目标类型的第二子查询条件,则将所述目标类型的第二查询条件对应的查询属性信息,确定为第二索引信息;
根据第一索引信息和第二索引信息,生成与所述数据查询请求对应的数据库的第一候选索引。
3.根据权利要求1所述的方法,其特征在于,所述第二查询条件包括第三子查询条件和第四子查询条件,所述第三子查询条件包括的查询属性信息存在查询顺序,所述根据所述分析数据中,所述目标查询模型的第二查询条件对应的目标查询属性信息的频次,生成所述数据库的第二候选索引,包括:
获取所述分析数据的目标查询模型中,第三子查询条件的目标查询顺序对应的每一个目标查询属性信息的频次;
根据所述频次满足预设条件的目标查询属性信息确定为第三索引信息;
若包含所述第三索引信息的目标查询模型中,第四子查询条件对应的查询属性信息中,存在相同的查询属性信息,则基于所述相同的查询属性信息,以及所述第三索引信息,生成所述第二候选索引。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述获取分析数据之前,所述方法还包括:
接收针对所述数据库的数据查询请求;
基于所述数据查询请求携带的查询条件,以及所述查询条件包含的查询属性信息对所述数据查询请求进行分析处理,以确定所述数据查询请求对应的查询模型,并更新所述查询模型的命中次数,所述命中次数表示与所述查询模型对应的数据查询请求的数量;
根据所述查询模型以及所述查询模型的命中次数,生成分析数据。
5.根据权利要求4所述的方法,其特征在于,所述查询模型包括与其对应的数据查询请求被数据库响应的响应时间,所述获取分析数据之后,所述方法还包括:
获取所述分析数据中,命中次数大于命中阈值的待处理查询模型;
针对每个待处理查询模型,根据所述待处理查询模型对应的每个查询请求的响应时间,计算所述待处理查询模型的平均响应时间;
针对每个待处理查询模型,将所述数据库的当前索引与所述待处理查询模型进行匹配,得到所述待处理查询模型的模型匹配度;
根据所述平均响应时间和所述模型匹配度,从所述待处理查询模型中确定目标查询模型。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一候选索引与所述目标查询模型的匹配度,以及所述第二候选索引与所述目标查询模型的匹配度,从所述第一候选索引和所述第二候选索引中确定所述数据库的目标索引之前,所述方法还包括:
针对每个目标查询模型,将所述目标查询模型中每个查询条件包含的查询属性信息与所述第一候选索引包含的索引信息进行匹配,以计算所述第一候选索引与所述目标查询模型之间的初始匹配度;
针对每个目标查询模型,将所述目标查询模型中每个查询条件包含的查询属性信息与所述第二候选索引包含的索引信息进行匹配,以计算所述第二候选索引与所述目标查询模型之间的初始匹配度;
将每个目标查询模型的命中次数以及与第一候选索引之间的初始匹配度进行点乘处理,以对所述目标查询模型的初始匹配度进行加权求和,得到所述第一候选索引的匹配度;
将每个目标查询模型的命中次数以及与所述第二候选索引之间的初始匹配度进行点乘处理,以对所述目标查询模型的初始匹配度进行加权求和,得到所述第二候选索引的匹配度。
7.根据权利要求6所述的方法,其特征在于,所述针对每个目标查询模型,将所述目标查询模型中每个查询条件包含的查询属性信息与所述第一候选索引包含的索引信息进行匹配,以计算所述第一候选索引与所述目标查询模型之间的初始匹配度,包括:
从所述第一候选索引包含的索引信息中确定目标索引信息;
针对每个目标查询模型,若所述目标索引信息与所述目标查询模型中,第一查询条件对应的属性查询信息相同,则根据所述目标索引信息计算所述第一候选索引与所述目标查询模型在第一查询条件下的初始匹配度;
将所述目标索引信息的关联索引信息确定为目标索引信息,返回执行针对每个目标查询模型,若所述目标索引信息与所述目标查询模型中,第一查询条件对应的属性查询信息相同,则根据所述目标索引信息计算所述第一候选索引与所述目标查询模型在第一查询条件下的初始匹配度,直到所述目标索引信息为预设索引信息,得到在第一查询条件下的多个初始匹配度;
根据所述在第一查询条件下的多个初始匹配度,计算所述第一候选索引与所述目标查询模型之间的初始匹配度。
8.一种索引生成装置,其特征在于,包括:
数据获取单元,用于获取分析数据,所述分析数据为针对接收到的数据查询请求,分析其对应的查询模型得到,所述分析数据包括至少一种查询模型,所述查询模型包括目标查询模型,所述查询模型包括至少一个查询条件,每个查询条件包括至少一个查询属性信息;
第一索引生成单元,用于根据所述分析数据中,目标查询模型的第一查询条件对应的每个查询属性信息的频次,生成与所述数据查询请求对应的数据库的第一候选索引;
第二索引生成单元,用于根据所述分析数据中,所述目标查询模型的第二查询条件对应的目标查询属性信息的频次,生成所述数据库的第二候选索引;
目标索引确定单元,用于根据所述第一候选索引与所述目标查询模型的匹配度,以及所述第二候选索引与所述目标查询模型的匹配度,从所述第一候选索引和所述第二候选索引中确定所述数据库的目标索引。
9.一种计算机设备,其特征在于,包括存储器和处理器;所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的计算机程序,以执行权利要求1至7任一项所述的索引生成方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器加载,以执行权利要求1至7任一项所述的索引生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110915018.4A CN115705320A (zh) | 2021-08-10 | 2021-08-10 | 索引生成方法、装置、计算机设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110915018.4A CN115705320A (zh) | 2021-08-10 | 2021-08-10 | 索引生成方法、装置、计算机设备和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115705320A true CN115705320A (zh) | 2023-02-17 |
Family
ID=85179545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110915018.4A Pending CN115705320A (zh) | 2021-08-10 | 2021-08-10 | 索引生成方法、装置、计算机设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115705320A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827646A (zh) * | 2023-02-22 | 2023-03-21 | 北京仁科互动网络技术有限公司 | 索引配置方法、装置和电子设备 |
-
2021
- 2021-08-10 CN CN202110915018.4A patent/CN115705320A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827646A (zh) * | 2023-02-22 | 2023-03-21 | 北京仁科互动网络技术有限公司 | 索引配置方法、装置和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108304444B (zh) | 信息查询方法及装置 | |
CN108595461B (zh) | 兴趣探索方法、存储介质、电子设备及*** | |
US20150213042A1 (en) | Search term obtaining method and server, and search term recommendation system | |
CN107229645B (zh) | 信息处理方法、服务平台及客户端 | |
CN111061750A (zh) | 一种查询处理方法、装置及计算机可读存储介质 | |
CN112100396B (zh) | 一种数据处理方法和装置 | |
CN110909222B (zh) | 基于聚类的用户画像建立方法、装置、介质及电子设备 | |
CN110209809B (zh) | 文本聚类方法和装置、存储介质及电子装置 | |
CN109885651B (zh) | 一种问题推送方法和装置 | |
CN112364014B (zh) | 数据查询方法、装置、服务器及存储介质 | |
CN105512300B (zh) | 信息过滤方法及*** | |
CN111090686A (zh) | 数据处理方法、装置、服务器和存储介质 | |
CN110543484A (zh) | 提示词的推荐方法及装置、存储介质和处理器 | |
CN115187331A (zh) | 基于多模态数据的产品推荐方法、装置、设备及存储介质 | |
CN111160699A (zh) | 一种专家推荐方法及*** | |
CN115705320A (zh) | 索引生成方法、装置、计算机设备和计算机可读存储介质 | |
KR101621735B1 (ko) | 추천 검색어 제공 방법 및 시스템 | |
CN111310072B (zh) | 关键词提取方法、装置和计算机可读存储介质 | |
CN117194426A (zh) | 一种数据分区归档方法、***、设备和介质 | |
KR101568800B1 (ko) | 실시간 이슈 검색어 선별 방법 및 시스템 | |
US10394826B1 (en) | System and methods for searching query data | |
CN116756373A (zh) | 基于知识图谱更新的项目评审专家筛选方法、***及介质 | |
US20180276294A1 (en) | Information processing apparatus, information processing system, and information processing method | |
KR101918358B1 (ko) | 맞춤형 정보를 제공하는 데이터 센터 시스템 | |
CN113741930A (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 |