一种自动创建索引的方法、装置及数据库系统制造方法及图纸

技术编号:18783676 阅读:28 留言:0更新日期:2018-08-29 06:55
本发明专利技术公开了一种自动创建索引的方法、装置及数据库系统。该方法包括:分析数据查询语句中的目标数据表以及操作条件;判断是否需要分析数据分布,当判断需要分析时,计算目标数据表中满足操作条件的表数据的分布情况;当表数据的分布情况满足预设的索引创建策略时,将操作条件创建为目标数据表的索引。相对于现有的人工分析预估创建索引的方法,本发明专利技术准确性更高,且能有效提高SQL语句执行效率。

【技术实现步骤摘要】
一种自动创建索引的方法、装置及数据库系统
本专利技术涉及数据库
,尤其涉及一种自动创建索引的方法、装置及数据库系统。
技术介绍
关系数据库是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。随着信息技术发展,数据已经渗透到各个行业和应用中,关系数据库在各行各业得到了广泛应用。目前数据库技术条件下,数据库应用模型是通过如下方式进行建立的:通过分析数据的逻辑关系,设计表结构;通过分析应用对数据库的使用场景,预先估计可能的SQL语句有哪些,分析可能的查询条件,而后选取表的一个或者多个列作为索引字段创建索引。可知索引是根据设计者经验预先创建好的。而随着时间的推移,人们对数据使用的需求是变化多样的。例如:节假日可能需要通过新的查询SQL语句,年底报表可能需要新的复杂报表SQL语句,系统需要与之对应的索引。可知,当前的关系数据库的索引在创建时,依据是需求收集和设计者经验能力。如果需求收集可能不准确、设计者能力参差不齐,都有可能导致索引不准确、不合理,效率低下。并且,索引是在系统设计之初手工创建或者后期通过升级的方式手工优化调整,索引灵活性也相对较低。而随着现实世界数据特征的不断变化,对于那些数据结构复杂,数据量大的情况,统称为大数据,目前的针对关系数据库的索引创建方法已经满足不了人们对数据的处理效率和灵活性更高的要求。
技术实现思路
本专利技术提供一种自动创建索引的方法、装置及数据库系统,用以解决现有的索引创建方法中创建效率低和灵活性低的问题。为实现上述专利技术目的,本专利技术采用下述的技术方案;依据本专利技术的一个方面,提供一种自动创建索引的方法,包括:分析数据查询语句中的目标数据表以及操作条件;判断是否需要分析数据分布,当判断需要分析时,计算所述目标数据表中满足所述操作条件的表数据的分布情况;当所述表数据的分布情况满足预设的索引创建策略时,将所述操作条件创建为所述目标数据表的索引。优选地,分析数据查询语句中的目标数据表以及操作条件,具体包括:对所述数据查询语句进行语法检查,判断所述数据查询语句是否为无效语句;当判定为有效语句时,根据所述数据查询语句的语法规则获取所述目标数据表以及所述操作条件。优选地,判断是否需要分析数据分布,具体包括:获取所述索引创建策略的创建依据,根据所述创建依据判断所述目标数据表是否在预设的数据表白名单中;当存在时,则继续根据所述创建依据判断是否需要分析数据分布,否则,禁止对所述目标数据表继续创建索引。优选地,计算所述目标数据表中满足所述操作条件的表数据的分布情况,具体包括:读取预设的表数据扫描策略;根据所述扫描策略从所述目标数据表中获取满足所述操作条件的表数据;根据预设统计方法计算所述表数据的分布情况。优选地,当所述表数据的分布情况满足预设的索引创建策略时,将所述操作条件创建为所述目标数据表的索引,具体包括:根据所述表数据的分布情况获取各个操作条件的筛选效率,按照筛选效率高低将所述操作条件进行排序,将排序后的所述操作条件建立复合索引;以所述复合索引的先导创建单一索引;判断所述复合索引和所述单一索引的结果集占比是否大于预设阈值时:当大于时,则将所述单一索引作为所述目标数据表的索引;否则,将所述复合索作为所述目标数据表的索引。优选地,所述将所述操作条件创建为所述目标数据表的索引之后,所述方法还包括:实时监测数据查询语句和/或数据库中的数据表的是否有变化,当监测到有变化时,则根据变化情况确定建立索引或者删除索引。优选地,所述方法还包括:当判断不需要分析数据分布时,则直接将所述操作条件创建所述目标数据表的索引。优选地,所述操作条件包括where筛选、groupby分组、orderby排序中的任意一种或多种操作所对应的条件。依据本专利技术的一个方面,提供一种自动创建索引的装置,包括:分析单元,用于分析数据查询语句中的目标数据表以及操作条件;计算单元,用于判断是否需要分析数据分布,当判断需要分析时,计算所述目标数据表中满足所述操作条件的表数据的分布情况;创建单元,用于当所述表数据的分布情况满足预设的索引创建策略时,将所述操作条件创建为所述目标数据表的索引。优选地,所述分析单元,具体用于:对所述数据查询语句进行语法检查,判断所述数据查询语句是否为无效语句;当判定为有效语句时,根据所述数据查询语句的语法规则获取所述目标数据表以及操作条件。优选地,所述计算单元,具体用于:判断是否需要分析数据分布时,获取所述索引创建策略的创建依据,根据所述创建依据判断所述目标数据表是否在预设的数据表白名单中;当存在时,则继续根据所述创建依据判断是否需要分析数据分布,否则,禁止对所述目标数据表继续创建索引。优选地,所述计算单元,具体用于:读取预设的表数据扫描策略;根据所述扫描策略从所述目标数据表中获取满足所述操作条件的表数据;根据预设统计装置计算所述表数据的分布情况。优选地,所述创建单元,具体用于:根据所述表数据的分布情况获取各个操作条件的筛选效率,按照筛选效率高低将所述操作条件进行排序,将排序后的所述操作条件建立复合索引;以所述复合索引的先导创建单一索引;判断所述复合索引和所述单一索引的结果集占比是否大于预设阈值时:当大于时,则将所述单一索引作为所述目标数据表的索引;否则,将所述复合索作为所述目标数据表的索引。优选地,所述装置还包括监测单元,用于:将所述操作条件创建为所述目标数据表的索引之后,实时监测数据查询语句和/或数据库中的数据表的是否有变化,当监测到有变化时,则根据变化情况确定建立索引或者删除索引。优选地,所述创建单元,还用于:当判断不需要分析数据分布时,则直接将所述操作条件创建所述目标数据表的索引。优选地,所述操作条件包括where筛选、groupby分组、orderby排序中的任意一种或多种操作所对应的条件。依据本专利技术的一个方面,提供一种数据库系统,包括上述所述的自动创建索引的装置。本专利技术有益效果如下:本专利技术提供的自动创建索引的方法、装置及数据库系统,通过过分析当前的SQL语句的组成结构,基于表数据在表中的分布情况,自动创建索引供SQL语句使用。相对于现有的人工分析预估创建索引的方法,准确性更高,能提高SQL语句执行效率。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例所提供的自动创建索引方法的流程图;图2为本专利技术提供的insert语句执行流程示意图;图3为本专利技术提供的新的SQL语句执行流程示意图;。图4为本专利技术实施例所提供的自动创建索引装置的结构示意图;图5为本专利技术提供的数据发布模型示意图;图6为本专利技术提供的数据消费模型示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,本文档来自技高网...

【技术保护点】
1.一种自动创建索引的方法,其特征在于,包括:分析数据查询语句中的目标数据表以及操作条件;判断是否需要分析数据分布,当判断需要分析时,计算所述目标数据表中满足所述操作条件的表数据的分布情况;当所述表数据的分布情况满足预设的索引创建策略时,将所述操作条件创建为所述目标数据表的索引。

【技术特征摘要】
1.一种自动创建索引的方法,其特征在于,包括:分析数据查询语句中的目标数据表以及操作条件;判断是否需要分析数据分布,当判断需要分析时,计算所述目标数据表中满足所述操作条件的表数据的分布情况;当所述表数据的分布情况满足预设的索引创建策略时,将所述操作条件创建为所述目标数据表的索引。2.如权利要求1所述的方法,其特征在于,分析数据查询语句中的目标数据表以及操作条件,具体包括:对所述数据查询语句进行语法检查,判断所述数据查询语句是否为无效语句;当判定为有效语句时,根据所述数据查询语句的语法规则获取所述目标数据表以及所述操作条件。3.如权利要求1所述的方法,其特征在于,判断是否需要分析数据分布,具体包括:获取所述索引创建策略的创建依据,根据所述创建依据判断所述目标数据表是否在预设的数据表白名单中;当存在时,则继续根据所述创建依据判断是否需要分析数据分布,否则,禁止对所述目标数据表继续创建索引。4.如权利要求1或3所述的方法,其特征在于,计算所述目标数据表中满足所述操作条件的表数据的分布情况,具体包括:读取预设的表数据扫描策略;根据所述扫描策略从所述目标数据表中获取满足所述操作条件的表数据;根据预设统计方法计算所述表数据的分布情况。5.如权利要求1所述的方法,其特征在于,当所述表数据的分布情况满足预设的索引创建策略时,将所述操作条件创建为所述目标数据表的索引,具体包括:根据所述表数据的分布情况获取各个操作条件的筛选效率,按照筛选效率高低将所述操作条件进行排序,将排序后的所述操作条件建立复合索引;以所述复合索引的先导创建单一索引;判断所述复合索引和所述单一索引的结果集占比是否大于预设阈值时:当大于时,则将所述单一索引作为所述目标数据表的索引;否则,将所述复合索作为所述目标数据表的索引。6.如权利要求1所述的方法,其特征在于,所述将所述操作条件创建为所述目标数据表的索引之后,所述方法还包括:实时监测数据查询语句和/或数据库中的数据表的是否有变化,当监测到有变化时,则根据变化情况确定建立索引或者删除索引。7.如权利要求1所述的方法,其特征在于,所述方法还包括:当判断不需要分析数据分布时,则直接将所述操作条件创建所述目标数据表的索引。8.如权利要求1所述的方法,其特征在于,所述操作条件包括where筛选、groupby分组、orderby排序中的任意一种或多种操作所对应的条件。9.一种自...

【专利技术属性】
技术研发人员:谢东
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1