CN110807041B - 索引推荐方法、装置、电子设备及存储介质 - Google Patents
索引推荐方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110807041B CN110807041B CN201911060709.XA CN201911060709A CN110807041B CN 110807041 B CN110807041 B CN 110807041B CN 201911060709 A CN201911060709 A CN 201911060709A CN 110807041 B CN110807041 B CN 110807041B
- Authority
- CN
- China
- Prior art keywords
- index
- query
- processed
- database system
- cost
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000006870 function Effects 0.000 claims description 52
- 238000004364 calculation method Methods 0.000 claims description 19
- 230000008901 benefit Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种索引推荐方法、装置、电子设备及存储介质。该方法包括:获取待处理索引,基于数据库系统的历史工作负载以及运行工作负载,计算待处理索引给数据库系统带来的查询收益的评分,将评分满足目标评分条件的待处理索引作为待推荐索引,以使数据库系统接收到查询请求时根据待推荐索引生成查询执行计划,从而通过引入表征当前时刻对应的工作负载的运行工作负载,使得可以同时结合历史工作负载以及运行工作负载对待处理索引给数据库系统带来的查询收益进行评分,实现了对待处理索引给数据库系统带来的查询收益进行实时评分,并且将评分满足目标评分条件的待处理索引作为待推荐索引,使索引推荐具备实时调整功能。
Description
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种索引推荐方法、装置、电子设备及存储介质。
背景技术
当数据库系统检测到有查询任务时,可以将该查询任务作为工作负载,而为工作负载选择一个恰当的索引能够减少查询执行所需的资源,例如CPU时间或者磁盘IO。然而,现有的数据库系统的索引推荐方式还有待提升。
发明内容
鉴于上述问题,本申请提出了一种索引推荐方法、装置、电子设备及存储介质,以改善上述问题。
第一方面,本申请实施例提供了一种索引推荐方法,该方法包括:获取待处理索引;基于所述数据库系统的历史工作负载以及运行工作负载,计算所述待处理索引给所述数据库系统带来的查询收益的评分,所述历史工作负载为当前时刻之前的工作负载,所述运行工作负载为当前时刻对应的工作负载;将所述评分满足目标评分条件的所述待处理索引作为待推荐索引,以使所述数据库系统接收到查询请求时根据所述待推荐索引生成查询执行计划。
第二方面,本申请实施例提供了一种索引推荐装置,该装置包括:获取模块,用于获取待处理索引;评分计算模块,用于基于所述数据库系统的历史工作负载以及运行工作负载,计算所述待处理索引给所述数据库系统带来的查询收益的评分,所述历史工作负载为当前时刻之前的工作负载,所述运行工作负载为当前时刻对应的工作负载;推荐模块,用于将所述评分满足目标评分条件的所述待处理索引作为待推荐索引,以使所述数据库系统接收到查询请求时根据所述待推荐索引生成查询执行计划。
第三方面,本申请实施例提供了一种电子设备,包括存储器以及一个或多个处理器;一个或多个程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序配置用于执行上述第一方面所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有程序代码,其中,在程序代码由处理器运行时执行上述第一方面所述的方法。
本申请实施例提供的一种索引推荐方法、装置、电子设备及存储介质。本方法通过获取待处理索引,再基于数据库系统的历史工作负载以及运行工作负载,计算待处理索引给数据库系统带来的查询收益的评分,然后将评分满足目标评分条件的待处理索引作为待推荐索引,以使数据库系统接收到查询请求时可以根据待推荐索引生成查询执行计划,从而通过引入表征当前时刻对应的工作负载的运行工作负载,使得可以同时结合历史工作负载以及运行工作负载对待处理索引给数据库系统带来的查询收益进行评分,实现了对待处理索引给数据库系统带来的查询收益进行实时评分,并且将评分满足目标评分条件的待处理索引作为待推荐索引,使得可以根据待推荐索引生成实时的查询执行计划,使索引推荐具备实时调整功能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出了本申请一实施例提供的一种索引推荐方法的方法流程图。
图2示出了本申请另一实施例提供的一种索引推荐方法的方法流程图。
图3示出了图2中的步骤S240的方法流程图。
图4示出了图3中的步骤S241的方法流程图。
图5示出了图3中的步骤S242的方法流程图。
图6示出了本申请实施例提供的一种索引推荐装置的结构框图。
图7示出了本申请实施例提供的一种电子设备的结构框图。
图8示出了本申请实施例的用于保存或者携带实现根据本申请实施例的索引推荐方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。索引提供指向存储在表的指定列中的数据值的指针,然后根据指定的排序顺序对这些指针排序。数据库可以使用索引找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。
当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。可见,设计良好的索引可以减少磁盘I/O操作,并且消耗的系统资源也可以相对减少,从而可以提高查询性能。然而现有的数据库的索引推荐都是基于历史的工作负载,不能达到动态调整的目的。
针对上述的问题,发明人经过长期的研究发现,可以通过引入表征当前时刻对应的工作负载的运行工作负载,使得可以同时结合历史工作负载以及运行工作负载,计算待处理索引给数据库系统带来的查询收益的评分,历史工作负载为当前时刻之前的工作负载,运行工作负载为当前时刻对应的工作负载,然后将评分满足目标评分条件的待处理索引作为待推荐索引,以使数据库系统接收到查询请求时根据待推荐索引生成查询执行计划。实现了对待处理索引给数据库系统带来的查询收益进行实时评分,并且将评分满足目标评分条件的待处理索引作为待推荐索引,使得可以根据待推荐索引生成实时的查询执行计划,使索引推荐具备实时调整功能。因此,提出了本申请实施例提供的一种索引推荐方法、装置、电子设备及存储介质。
下面将结合附图具体描述本申请的各实施例。
请参阅图1,示出了本申请一实施例提供的一种索引推荐方法的流程图,本实施例提供一种索引推荐方法,可应用于数据库系统,该方法包括:
步骤S110:获取待处理索引。
其中,本申请实施例中的待处理索引可以理解为数据库系统中已经建立的索引(即数据库系统开始运行,接收外界请求时已经建立的索引)或者需要动态建立的索引(即在数据库系统运行阶段需要动态建立的索引),其中,数据库系统可以是SQL Server、Oracle、DB2等大型数据库系统,也可以是Foxpro、Access、MySQL等中小型数据库系统,具体可以不作限定。例如,学生表Student(id int,name char(20),age int)中,针对字段int、name、age建立的索引可以是已经建立的索引,也可以是需要动态建立的索引,可选的,这些索引均可以作为待处理索引。通过获取待处理索引,以便于可以对通过待处理索引查询给系统带来的查询收益进行评分,进而实现根据评分动态调整推荐给数据库系统的索引。
作为一种方式,在数据库系统启动后开始运行阶段,可以加载系统元数据。其中,元数据是指定义数据的数据,不同类型的数据库可以包括不同的元数据,例如,对于Oracle数据库中的元数据大体上可以包括:对表描述的数据,对视图描述的数据,对表中的字段描述的数据,对索引描述的数据,对主键的描述以及对外键的描述等。作为可能的实施方式,可以通过sql语句获取元数据,或者是通过getmetadata()方法获取元数据,或者通过系统存储过程和系统函数访问元数据,或者使用信息架构视图访问元数据,或者使用系统表访问元数据等。可选的,可以将元数据中预先建立的历史索引作为待处理索引,或者在接收到查询请求时,将需要动态建立的索引作为待处理索引。
步骤S120:基于所述数据库系统的历史工作负载以及运行工作负载,计算所述待处理索引给所述数据库系统带来的查询收益的评分。
需要说明的是,本申请实施例中的历史工作负载可以理解为当前时刻之前的工作负载,运行工作负载可以理解为与当前时刻对应的工作负载。查询收益可以理解为数据库系统通过待处理索引进行查询的速率,可选的,查询的速率越快查询收益越高。
可选的,通过基于数据库系统的历史工作负载以及运行工作负载,计算待处理索引给数据库系统带来的查询收益的评分,可以实现根据当前的运行情况对该评分进行实时调整,从而可以实现实时地调整向数据库系统推荐的索引。
步骤S130:将所述评分满足目标评分条件的所述待处理索引作为待推荐索引,以使所述数据库系统接收到查询请求时根据所述待推荐索引生成查询执行计划。
作为一种实施方式,目标评分条件可以是评分超过指定阈值。可选的,指定阈值的具体数值可以不作限定,例如可以是55、60、65、70等。
可选的,待推荐索引可以为待推荐给数据库系统的索引。作为一种方式,可以将评分超过指定阈值的待处理索引存放至推荐索引库(即用于存放待推荐给数据库系统的索引),以便在接收到查询请求时,可以从推荐索引库中选取与该查询请求对应的待推荐索引。
作为一种方式,可以将评分满足目标评分条件的待处理索引作为待推荐索引,以使数据库系统在接收到查询请求时可以根据待推荐索引生成实时的查询执行计划。
本实施例提供的索引推荐方法,通过获取待处理索引,再基于数据库系统的历史工作负载以及运行工作负载,计算待处理索引给数据库系统带来的查询收益的评分,后将评分满足目标评分条件的待处理索引作为待推荐索引,以使数据库系统接收到查询请求时可以根据待推荐索引生成查询执行计划。从而通过引入表征当前时刻对应的工作负载的运行工作负载,使得可以同时结合历史工作负载以及运行工作负载对待处理索引给数据库系统带来的查询收益进行评分,实现了对待处理索引给数据库系统带来的查询收益进行实时评分,并且将评分满足目标评分条件的待处理索引作为待推荐索引,使得可以根据待推荐索引生成实时的查询执行计划,使索引推荐具备实时调整功能。
请参阅图2,示出了本申请另一实施例提供的一种索引推荐方法的流程图,本实施例提供一种索引推荐方法,可应用于数据库系统,该方法包括:
步骤S210:获取待处理索引。
步骤S220:判断所述数据库系统是否处于初始阶段。
其中,本实施例中的初始阶段可以为数据库系统当次启动运行后还未接收到查询请求的阶段。
可以理解的是,在数据库系统启动后还未接收到任何查询请求的一段时间内,数据库系统的查询优化器会自动从已经建立的索引(即历史索引)中筛选出最优的查询方法对应的索引推荐给数据库系统,以使得数据库系统可以根据查询优化器所推荐的索引进行相应的查询,即生成查询执行计划。而随着系统的运行,历史索引可能无法很好的满足查询需求,在这种方式下,可以根据查询请求动态建立索引,查询优化器也将更新推荐给数据库的索引,以实现快速高效的查询。即在系统开始运行之后,推荐给系统的索引可能是来自于历史索引,也可能是来自于需要动态建立的索引,或者是来源于二者的组合。
作为一种方式,为了提升索引推荐的准确性与实时性,可以在对待处理索引给数据库系统带来的查询收益进行评分之前,可以先判断数据库系统是否处于初始阶段,以便于可以根据判断结果采用对应的方式计算待处理索引给数据库系统带来的查询收益的评分。
步骤S230:通过历史工作负载对所述待处理索引给所述数据库系统带来的查询收益进行评分。
作为一种方式,若判定数据库系统是处于初始阶段,那么可以通过历史工作负载对待处理索引给数据库系统带来的查询收益进行评分。
作为一种实施方式,可以设定收益函数为profit(s,Q,),该收益函数可以用于动态捕待处理索引给数据库系统带来的查询收益。其中,s可以表示待处理索引,可以表示数据库模式中所有可定义索引的集合,可选的,收益函数profit(s,Q,)可以用于考察当待处理索引对查询Q的影响。例如,假设工作负载为W,那么待处理索引对于W的收益函数可以表示为:即工作负载W的收益函数是其所包含的不同查询Q的收益之和。
可选的,本实施例可以用WoHistory表示历史工作负载,参照上述描述,若判定数据库系统是处于初始阶段,可以参照下述模型通过历史工作负载对待处理索引给数据库系统带来的查询收益进行评分:
其中,score(s,0)表示在数据库系统处于0时刻(即数据库系统启动后未接收到查询请求的时段,也可以理解为上述的初始阶段)时,用于对待处理索引进行评分的评分函数。即可以通过第一目标收益计算规则计算与历史工作负载对应的历史查询收益profit(s,WoHistory,),再获取待处理索引对应的代价参数(可选的,建立索引需要相应的代价,例如,排序即是建立索引的代价)build(s),然后将历史查询收益与该代价参数的差值,作为待处理索引给数据库系统带来的查询收益的评分。
步骤S240:基于所述数据库系统的历史工作负载以及运行工作负载,计算所述待处理索引给所述数据库系统带来的查询收益的评分。
可以理解的是,随着数据库系统的运行状态的改变,索引的价值也会随之改变,例如,开始被推荐的索引可能不再适用于被作为待推荐索引推荐给数据库系统,而开始不被推荐的索引也可能被作为待推荐索引推荐给数据库。
作为一种方式,若判定数据库系统不是处于初始阶段,那么可以基于数据库系统的历史工作负载以及运行工作负载,计算待处理索引给数据库系统带来的查询收益的评分,以便于可以根据系统的运行情况实时的调整待建立索引给数据库系统带来的查询收益的评分,具体描述如下。
作为一种方式,请参阅图3,步骤S240具体可以包括:
步骤S241:获取与所述历史工作负载对应的第一查询收益参数。
其中,第一查询收益参数可以理解为当前时刻(例如,可以是t时刻),通过历史工作负载对待处理索引给数据库系统带来的查询收益进行评分所占的权重,具体描述如下:
作为一种方式,请参阅图4,步骤S241具体可以包括:
步骤S2411:基于第一目标收益计算规则计算与所述历史工作负载对应的历史查询收益。
步骤S2412:将所述历史查询收益与预设的第一权值的乘积作为与所述历史工作负载对应的第一查询收益参数。
可选的,预设的第一权值可以表示为α(n)。其中,n可以表示当前时刻为止数据库系统处理任务的集合大小,n=card(WoRun(t)),WoRun(t)表示t时刻系统运行工作负载。
在一个具体的应用场景中,α(n)可以设定为随时间的推移指数衰减,例如α(n)=0.99n,在这种方式下,当处理的查询语句越来越频繁时权重α(n)会越来越小。
步骤S242:获取与所述运行工作负载对应的第二查询收益参数。
其中,第二查询收益参数可以理解为当前时刻(例如,可以是t时刻),通过运行工作负载对待处理索引给数据库系统带来的查询收益进行评分所占的权重,具体描述如下:
作为一种方式,请参阅图5,步骤S242具体可以包括:
步骤S2421:基于第二目标收益计算规则计算与所述运行工作负载对应的运行查询收益。
步骤S2422:将所述运行查询收益与预设的第二权值的乘积作为与所述运行工作负载对应的第二查询收益参数。
可选的,预设的第二权值可以表示为1-α(n)。当处理的查询语句越来越频繁时权重α(n)会越来越小,1-α(n)会越来越大。作为一种方式,参照上述描述,可以将(1-α(n))*profit(s,WoRun(t),)作为与运行工作负载对应的第二查询收益参数。
步骤S243:获取与所述待处理索引对应的代价参数。
其中,关于代价参数build(s)的具体获取过程可以参考前述实施例中的描述,在此不再赘述。
步骤S244:计算所述第一查询收益参数以及所述第二查询收益参数之和,得到参考查询参数。
步骤S245:将所述参考查询参数与所述代价参数的差值,作为所述待处理索引给所述数据库系统带来的查询收益的评分。
可选的,可以设定t时刻的评分函数为:
将score(s,t)作为待处理索引给数据库系统带来的查询收益的评分。可选的,通过加权平均(即对历史查询收益与运行查询收益分别设定对应的权值比重)的方式,使得可以根据系统的运行状态实时的调整对待处理索引给数据库系统带来的查询收益的评分,提升了索引推荐的有效性与灵活性。
需要说明的是,作为一种提升数据库系统的索引推荐的准确性的方式,本实施例可以定义两种收益函数,profitdep和profitindep。前者可以独立于其他定义的索引对于查询语句Q的影响;后者将索引集合里面的索引纳入考量范围。对于查询语句Q,可以根据查询优化器产生最优查询执行计划plan(Q,I),及其相应的执行代价cost(Q,I),其中,索引子集。如果索引s∈I在查询执行计划中建议使用,那么可以记为可选的,假设系统在执行查询Q的时刻记为tQ,在时刻t系统可用的索引表示为A(t),那么(可以理解为系统开始运行,接收外界请求时候已经建立的索引)。
结合上述描述,作为一种方式,本实施例中的第一目标收益计算规则与第二目标收益计算规则可以分别包括:将与待处理索引关联的查询语句以及预先建立的历史索引,输入预设的代价函数(即cost(Q,I)),计算得到第一代价;将与待处理索引关联的查询语句、历史索引以及待处理索引,输入代价函数,得到第二代价;将第一代价与第二代价做差。
例如,在一个具体的应用场景中,若与待处理索引关联的查询语句Q∈WoRun(t)∨Q∈WoHistory,那么可以得到第一目标收益计算规则以及第二目标收益计算规则分别为:
作为另一种方式,第一目标收益计算规则可以包括:将与待处理索引关联的查询语句以及预先建立的历史索引,输入预设的代价函数(即cost(Q,I)),计算得到第一代价;将与待处理索引关联的查询语句、历史索引以及待处理索引,输入代价函数,计算得到第二代价;将第一代价与第二代价做差。第二目标收益计算规则可以包括:将与待处理索引关联的查询语句以及当前时刻数据库系统可用的索引输入预设的代价函数,计算得到第三代价;将与待处理索引关联的查询语句、当前时刻数据库系统可用的索引以及待处理索引,输入代价函数,计算得到第四代价;将第三代价与第四代价做差。
例如,在一个具体的应用场景中,第一目标收益计算规则可以为:
具体描述如上,在此不再赘述。第二目标收益计算规则可以为:
profitdep(s,Q,S)=cost(Q,A(t))-cost(Q,A(t)∪s),
Q∈WoRun(t)。
其中,A(t)表示当前时刻数据库系统可用的索引,cost(Q,A(t))可以表示第三代价,cost(Q,A(t)∪s)可以表示第四代价。在这种方式下,收益函数profitdep使用的索引s受其它索引的影响。如果查询Q属于运行时新接收的,那么其收益函数profitdep通过当前可用索引A(t)带来的收益减去索引集合A(t)∪s带来的查询收益。
作为又一种方式,第一目标收益计算规则可以包括:将与待处理索引关联的查询语句以及预先建立的历史索引,输入预设的代价函数,计算得到第一代价;将与待处理索引关联的查询语句以及数据库系统的可定义索引集合,输入代价函数,计算得到第五代价;将第一代价与第五代价做差。可选的,第二目标收益计算规则可以包括:将与待处理索引关联的查询语句、历史索引以及待处理索引,输入代价函数,得到第二代价;将第一代价与第二代价做差。
在一个具体的应用场景中,第一目标收益计算规则可以为:
可选的,第二目标收益计算规则可以为:
具体描述如上,在此不再赘述。
需要说明的是,上述示出的几种方式仅作为示例,并不构成对本方案的限定,实际实施时可以将上述各种公式进行调整以及适应性置换,由上述方式所想到的实施方式均在本申请的保护范围内。
可选的,本申请实施例中,通过运行工作负载以及历史工作负载为数据库系统动态的推荐索引,通过设定权值的方式,使得历史查询收益和运行查询收益得以加权平均,从而查询优化器可以更加准确地根据查询收益的评分为系统推荐高查询收益的索引,实现了灵活准确的实施索引推荐,使得数据库系统可以适应复杂多变的工作负载。
步骤S250:将所述评分满足目标评分条件的所述待处理索引作为待推荐索引,以使所述数据库系统接收到查询请求时根据所述待推荐索引生成查询执行计划。
作为一种实施方式,可以在获得待推荐索引之后,根据待推荐索引的评分对待推荐索引进行排序,可选的,在接收到查询请求时,可以优先选择与查询请求对应的排序在前的待推荐索引进行推荐,以使得系统可以更加快速的进行查询,提升用户体验。
本实施例提供的索引推荐方法,通过引入表征当前时刻对应的工作负载的运行工作负载,使得可以同时结合历史工作负载以及运行工作负载对待处理索引给数据库系统带来的查询收益进行评分,可以实现对待处理索引给数据库系统带来的查询收益进行实时评分,然后将评分满足目标评分条件的待处理索引作为待推荐索引,使得可以根据待推荐索引生成实时的查询执行计划,使索引推荐具备实时调整功能。
请参阅图6,为本申请实施例提供的一种索引推荐装置的结构框图,本实施例提供一种索引推荐装置300,运行于数据库系统,所述装置300包括:获取模块310、评分计算模块320以及推荐模块330:
获取模块310,用于获取待处理索引。
作为一种方式,装置300还可以包括判断模块,该判断模块可以用于在获取待处理索引之后,判断数据库系统是否处于初始阶段,所述初始阶段为所述数据库系统当次启动运行后还未接收到查询请求的阶段。可选的,若判定数据库系统处于初始运行阶段,那么可以通过历史工作负载对所述待处理索引给所述数据库系统带来的查询收益进行评分。可选的,若判定数据库系统未处于初始运行阶段,那么可以执行下述评分计算模块320中基于所述数据库系统的历史工作负载以及运行工作负载,计算所述待处理索引给所述数据库系统带来的查询收益的评分的步骤。
可选的,通过历史工作负载对所述待处理索引给所述数据库系统带来的查询收益进行评分的步骤可以包括:将所述历史查询收益与所述代价参数的差值,作为所述待处理索引给所述数据库系统带来的查询收益的评分。
评分计算模块320,用于基于所述数据库系统的历史工作负载以及运行工作负载,计算所述待处理索引给所述数据库系统带来的查询收益的评分,所述历史工作负载为当前时刻之前的工作负载,所述运行工作负载为当前时刻对应的工作负载。
作为一种方式,评分计算模块320,具体可以用于获取与所述历史工作负载对应的第一查询收益参数;获取与所述运行工作负载对应的第二查询收益参数;获取与所述待处理索引对应的代价参数;计算所述第一查询收益参数以及所述第二查询收益参数之和,得到参考查询参数;将所述参考查询参数与所述代价参数的差值,作为所述待处理索引给所述数据库系统带来的查询收益的评分。
其中,获取与所述历史工作负载对应的第一查询收益参数的步骤可以包括:基于第一目标收益计算规则计算与所述历史工作负载对应的历史查询收益;将所述历史查询收益与预设的第一权值的乘积作为与所述历史工作负载对应的第一查询收益参数。获取与所述运行工作负载对应的第二查询收益参数的步骤可以包括:基于第二目标收益计算规则计算与所述运行工作负载对应的运行查询收益;将所述运行查询收益与预设的第二权值的乘积作为与所述运行工作负载对应的第二查询收益参数。
作为一种实施方式,本申请实施例中的第一目标收益计算规则与第二目标收益计算规则分别可以包括:将与所述待处理索引关联的查询语句以及预先建立的历史索引,输入预设的代价函数,计算得到第一代价;将与所述待处理索引关联的查询语句、所述历史索引以及所述待处理索引,输入所述代价函数,得到第二代价;将所述第一代价与所述第二代价做差。
作为另一种实施方式,本申请实施例中的第一目标收益计算规则可以包括:将与所述待处理索引关联的查询语句以及预先建立的历史索引,输入预设的代价函数,计算得到第一代价;将与所述待处理索引关联的查询语句、所述历史索引以及所述待处理索引,输入所述代价函数,计算得到第二代价;将所述第一代价与所述第二代价做差。本申请实施例中的第二目标收益计算规则可以包括:将与所述待处理索引关联的查询语句以及所述当前时刻数据库系统可用的索引输入预设的代价函数,计算得到第三代价;将与所述待处理索引关联的查询语句、所述当前时刻数据库系统可用的索引以及所述待处理索引,输入所述代价函数,计算得到第四代价;将所述第三代价与所述第四代价做差。
作为又一种实施方式,本申请实施例中的第一目标收益计算规则可以包括:将与所述待处理索引关联的查询语句以及预先建立的历史索引,输入预设的代价函数,计算得到第一代价;将与所述待处理索引关联的查询语句以及所述数据库系统的可定义索引集合,输入所述代价函数,计算得到第五代价;将所述第一代价与所述第五代价做差。本申请实施例中的第二目标收益计算规则可以包括:将与所述待处理索引关联的查询语句、所述历史索引以及所述待处理索引,输入所述代价函数,得到第二代价;将所述第一代价与所述第二代价做差。
可选的,本申请实施例中的第一目标收益计算规则与第二目标收益计算规则还可以是上述三种实施方式中的其他方式的组合,或者可以根据实际情况进行设定,在此不作限定。
推荐模块330,用于将所述评分满足目标评分条件的所述待处理索引作为待推荐索引,以使所述数据库系统接收到查询请求时根据所述待推荐索引生成查询执行计划。
本实施例提供的一种索引推荐装置,通过获取待处理索引,再基于数据库系统的历史工作负载以及运行工作负载,计算待处理索引给数据库系统带来的查询收益的评分,历史工作负载为当前时刻之前的工作负载,运行工作负载为当前时刻对应的工作负载,然后将评分满足目标评分条件的待处理索引作为待推荐索引,以使数据库系统接收到查询请求时根据待推荐索引生成查询执行计划。引入表征当前时刻对应的工作负载的运行工作负载,使得可以同时结合历史工作负载以及运行工作负载对待处理索引给数据库系统带来的查询收益进行评分,实现了对待处理索引给数据库系统带来的查询收益进行实时评分,并且将评分满足目标评分条件的待处理索引作为待推荐索引,使得可以根据待推荐索引生成实时的查询执行计划,使索引推荐具备实时调整功能。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,所显示或讨论的模块相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参阅图7,基于上述的索引推荐方法及装置,本申请实施例还提供了一种可以执行前述索引推荐方法的电子设备12。电子设备12包括存储器122以及相互耦合的一个或多个(图中仅示出一个)处理器124,存储器122以及处理器124之间通信线路连接。存储器122中存储有可以执行前述实施例中内容的程序,而处理器124可以执行存储器122中存储的程序。
其中,处理器124可以包括一个或者多个处理核。处理器124利用各种接口和线路连接整个电子设备12内的各个部分,通过运行或执行存储在存储器122内的指令、程序、代码集或指令集,以及调用存储在存储器122内的数据,执行电子设备12的各种功能和处理数据。可选地,处理器124可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器124可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器124中,单独通过一块通信芯片进行实现。
存储器122可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器122可用于存储指令、程序、代码、代码集或指令集。存储器122可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现前述各个实施例的指令等。存储数据区还可以存储电子设备12在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参考图8,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读存储介质400中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质400可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质400包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质400具有执行上述方法中的任何方法步骤的程序代码410的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码410可以例如以适当形式进行压缩。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.一种索引推荐方法,其特征在于,应用于数据库系统,所述方法包括:
获取待处理索引;
基于所述数据库系统的历史工作负载以及运行工作负载,计算所述待处理索引给所述数据库系统带来的查询收益的评分,所述历史工作负载为当前时刻之前的工作负载,所述运行工作负载为当前时刻对应的工作负载,所述查询收益表征所述数据库系统通过所述待处理索引进行查询的速率;
将所述评分满足目标评分条件的所述待处理索引作为待推荐索引,以使所述数据库系统接收到查询请求时根据所述待推荐索引生成查询执行计划。
2.根据权利要求1所述的方法,其特征在于,所述获取待处理索引的步骤之后,所述方法还包括:
判断所述数据库系统是否处于初始阶段,所述初始阶段为所述数据库系统当次启动运行后还未接收到查询请求的阶段;
若是,通过历史工作负载对所述待处理索引给所述数据库系统带来的查询收益进行评分;
若否,执行所述基于所述数据库系统的历史工作负载以及运行工作负载,计算所述待处理索引给所述数据库系统带来的查询收益的评分的步骤。
3.根据权利要求2所述的方法,其特征在于,所述基于所述数据库系统的历史工作负载以及运行工作负载,计算所述待处理索引给所述数据库系统带来的查询收益的评分的步骤包括:
获取与所述历史工作负载对应的第一查询收益参数;
获取与所述运行工作负载对应的第二查询收益参数;
获取与所述待处理索引对应的代价参数;
计算所述第一查询收益参数以及所述第二查询收益参数之和,得到参考查询参数;
将所述参考查询参数与所述代价参数的差值,作为所述待处理索引给所述数据库系统带来的查询收益的评分。
4.根据权利要求3所述的方法,其特征在于,所述获取与所述历史工作负载对应的第一查询收益参数的步骤包括:
基于第一目标收益计算规则计算与所述历史工作负载对应的历史查询收益;
将所述历史查询收益与预设的第一权值的乘积作为与所述历史工作负载对应的第一查询收益参数;
所述获取与所述运行工作负载对应的第二查询收益参数的步骤包括:
基于第二目标收益计算规则计算与所述运行工作负载对应的运行查询收益;
将所述运行查询收益与预设的第二权值的乘积作为与所述运行工作负载对应的第二查询收益参数。
5.根据权利要求4所述的方法,其特征在于,所述通过历史工作负载对所述待处理索引给所述数据库系统带来的查询收益进行评分的步骤包括:
将所述历史查询收益与所述代价参数的差值,作为所述待处理索引给所述数据库系统带来的查询收益的评分。
6.根据权利要求4-5任一项所述的方法,其特征在于,所述第一目标收益计算规则包括:
将与所述待处理索引关联的查询语句以及预先建立的历史索引,输入预设的代价函数,计算得到第一代价,所述待处理索引关联的查询语句为所述历史工作负载;
将与所述待处理索引关联的查询语句、所述历史索引以及所述待处理索引,输入所述代价函数,得到第二代价;
将所述第一代价与所述第二代价做差得到所述第一目标收益;
所述第二目标收益计算规则包括:
将与所述待处理索引关联的查询语句以及预先建立的历史索引,输入预设的代价函数,计算得到第三代价,所述待处理索引关联的查询语句为所述运行工作负载;
将与所述待处理索引关联的查询语句、所述历史索引以及所述待处理索引,输入所述代价函数,得到第四代价;
将所述第三代价与所述第四代价做差得到所述第二目标收益。
7.根据权利要求4-5任一项所述的方法,其特征在于,所述第一目标收益计算规则包括:
将与所述待处理索引关联的查询语句以及预先建立的历史索引,输入预设的代价函数,计算得到第一代价;
将与所述待处理索引关联的查询语句、所述历史索引以及所述待处理索引,输入所述代价函数,计算得到第二代价;
将所述第一代价与所述第二代价做差;
所述第二目标收益计算规则包括:
将与所述待处理索引关联的查询语句以及所述当前时刻数据库系统可用的索引输入预设的代价函数,计算得到第三代价;
将与所述待处理索引关联的查询语句、所述当前时刻数据库系统可用的索引以及所述待处理索引,输入所述代价函数,计算得到第四代价;
将所述第三代价与所述第四代价做差。
8.根据权利要求4-5任一项所述的方法,其特征在于,所述第一目标收益计算规则包括:
将与所述待处理索引关联的查询语句以及预先建立的历史索引,输入预设的代价函数,计算得到第一代价;
将与所述待处理索引关联的查询语句以及所述数据库系统的可定义索引集合,输入所述代价函数,计算得到第五代价;
将所述第一代价与所述第五代价做差;
所述第二目标收益计算规则包括:
将与所述待处理索引关联的查询语句、所述历史索引以及所述待处理索引,输入所述代价函数,得到第二代价;
将所述第一代价与所述第二代价做差。
9.一种索引推荐装置,其特征在于,运行于数据库系统,所述装置包括:
获取模块,用于获取待处理索引;
评分计算模块,用于基于所述数据库系统的历史工作负载以及运行工作负载,计算所述待处理索引给所述数据库系统带来的查询收益的评分,所述历史工作负载为当前时刻之前的工作负载,所述运行工作负载为当前时刻对应的工作负载,所述查询收益表征所述数据库系统通过所述待处理索引进行查询的速率;
推荐模块,用于将所述评分满足目标评分条件的所述待处理索引作为待推荐索引,以使所述数据库系统接收到查询请求时根据所述待推荐索引生成查询执行计划。
10.一种电子设备,其特征在于,包括存储器;
一个或多个处理器;
一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行权利要求1-8任一所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码由处理器运行时执行权利要求1-8任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911060709.XA CN110807041B (zh) | 2019-11-01 | 2019-11-01 | 索引推荐方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911060709.XA CN110807041B (zh) | 2019-11-01 | 2019-11-01 | 索引推荐方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110807041A CN110807041A (zh) | 2020-02-18 |
CN110807041B true CN110807041B (zh) | 2022-05-20 |
Family
ID=69500915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911060709.XA Active CN110807041B (zh) | 2019-11-01 | 2019-11-01 | 索引推荐方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110807041B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666279B (zh) * | 2020-04-14 | 2022-04-29 | 阿里巴巴集团控股有限公司 | 查询数据处理方法、装置、电子设备及计算机存储介质 |
CN111782659B (zh) * | 2020-07-10 | 2023-10-17 | 东北大学 | 数据库索引创建方法、装置、计算机设备和存储介质 |
CN112347146B (zh) * | 2020-10-22 | 2024-05-14 | 深圳前海微众银行股份有限公司 | 一种索引推荐方法及装置 |
CN113407801B (zh) * | 2021-06-04 | 2023-11-28 | 跬云(上海)信息科技有限公司 | 云计算索引推荐方法及系统 |
CN113656437B (zh) * | 2021-07-02 | 2023-10-03 | 阿里巴巴新加坡控股有限公司 | 用于预测参照执行代价稳定度的模型构建方法 |
CN114048216B (zh) * | 2022-01-12 | 2022-05-20 | 中兴通讯股份有限公司 | 索引选择方法、电子设备及存储介质 |
CN118035507A (zh) * | 2024-04-12 | 2024-05-14 | 辽宁凡锦科技有限公司 | 基于数据挖掘技术的数据查询系统及方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102685601A (zh) * | 2012-04-27 | 2012-09-19 | 华为技术有限公司 | 访问智能电视多媒体资源的方法及装置、智能电视 |
CN102761627A (zh) * | 2012-06-27 | 2012-10-31 | 北京奇虎科技有限公司 | 基于终端访问统计的云网址推荐方法及系统及相关设备 |
CN103236986A (zh) * | 2013-04-07 | 2013-08-07 | 杭州华三通信技术有限公司 | 负载分担方法及装置 |
CN103324642A (zh) * | 2012-03-23 | 2013-09-25 | 日电(中国)有限公司 | 为数据建立索引的系统和方法以及数据查询方法 |
CN104298691A (zh) * | 2013-07-19 | 2015-01-21 | 国际商业机器公司 | 用于评估数据库索引的效率的方法和装置 |
CN107820613A (zh) * | 2015-06-26 | 2018-03-20 | 微软技术许可有限责任公司 | 数据库索引自动推荐和创建 |
CN110245137A (zh) * | 2019-05-07 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 一种索引的处理方法、装置及设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377232B (zh) * | 2012-04-25 | 2016-12-07 | 阿里巴巴集团控股有限公司 | 标题关键词推荐方法及系统 |
US20190138968A1 (en) * | 2017-11-06 | 2019-05-09 | Stoqos, LLC | Vendor matching engine and method of use |
-
2019
- 2019-11-01 CN CN201911060709.XA patent/CN110807041B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103324642A (zh) * | 2012-03-23 | 2013-09-25 | 日电(中国)有限公司 | 为数据建立索引的系统和方法以及数据查询方法 |
CN102685601A (zh) * | 2012-04-27 | 2012-09-19 | 华为技术有限公司 | 访问智能电视多媒体资源的方法及装置、智能电视 |
CN102761627A (zh) * | 2012-06-27 | 2012-10-31 | 北京奇虎科技有限公司 | 基于终端访问统计的云网址推荐方法及系统及相关设备 |
CN103236986A (zh) * | 2013-04-07 | 2013-08-07 | 杭州华三通信技术有限公司 | 负载分担方法及装置 |
CN104298691A (zh) * | 2013-07-19 | 2015-01-21 | 国际商业机器公司 | 用于评估数据库索引的效率的方法和装置 |
CN107820613A (zh) * | 2015-06-26 | 2018-03-20 | 微软技术许可有限责任公司 | 数据库索引自动推荐和创建 |
CN110245137A (zh) * | 2019-05-07 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 一种索引的处理方法、装置及设备 |
Non-Patent Citations (3)
Title |
---|
A Tool for Automatic Index Selection in Database Management Systems;Wendel Goes Pedrozo 等;《2014 International Symposium on Computer, Consumer and Control》;20140630;第1061-1064页 * |
一种基于Solr的HBase海量数据二级索引方案;王文贤 等;《信息网络安全》;20170810;第39-44页 * |
一种支持区块链交易溯源的混合索引机制;尤瑶 等;《计算机集成制造系统》;20190415;第25卷(第4期);第978-984页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110807041A (zh) | 2020-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110807041B (zh) | 索引推荐方法、装置、电子设备及存储介质 | |
CN109766497B (zh) | 排行榜生成方法及装置、存储介质、电子设备 | |
US10296508B2 (en) | Systems and methods to manage online analytical and transactional processing for an in-memory columnar database | |
US20170039232A1 (en) | Unified data management for database systems | |
US8803882B2 (en) | Identifying on a graphical depiction candidate points and top-moving queries | |
EP3314468B1 (en) | Matching documents using a bit vector search index | |
US8463807B2 (en) | Augmented search suggest | |
US20230038616A1 (en) | Reducing matching documents for a search query | |
KR20160098084A (ko) | 관심대상 문서 필터링 시스템 및 그 방법 | |
US8375022B2 (en) | Keyword determination based on a weight of meaningfulness | |
CN111612581A (zh) | 一种物品推荐的方法、装置、设备及存储介质 | |
US11803521B2 (en) | Implementation of data access metrics for automated physical database design | |
CN110569289A (zh) | 基于大数据的列数据处理方法、设备及介质 | |
US11630829B1 (en) | Augmenting search results based on relevancy and utility | |
CN110888909B (zh) | 一种评估内容的数据统计处理方法及装置 | |
CN110019783B (zh) | 属性词聚类方法及装置 | |
WO2023107274A1 (en) | Automatic file organization within a cloud storage system | |
JP2020071678A (ja) | 情報処理装置、制御方法、プログラム | |
EP3314467B1 (en) | Bit vector search index | |
CN114003619A (zh) | 一种数据库查询的方法、装置、电子设备及存储介质 | |
EP2584482A1 (en) | Answer-augmented query suggestion | |
CN115705320A (zh) | 索引生成方法、装置、计算机设备和计算机可读存储介质 | |
CN110765237A (zh) | 文档处理方法、装置、存储介质及电子设备 | |
US20230418878A1 (en) | Multi-model enrichment memory and catalog for better search recall with granular provenance and lineage | |
CN115455010B (zh) | 一种基于milvus数据库的数据处理方法、电子设备及存储介质 |
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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20200218 Assignee: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd. Assignor: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd. Contract record no.: X2021440000031 Denomination of invention: Index recommendation method, device, electronic device and storage medium License type: Common License Record date: 20210125 |
|
GR01 | Patent grant | ||
GR01 | Patent grant |