一种索引建立方法及设备技术

技术编号:15616913 阅读:57 留言:0更新日期:2017-06-14 03:35
本发明专利技术公开了一种索引建立方法,首先根据数据库中的列在预设的时间阈值内的索引状态信息确定是否需要为该列建立索引,并在确定需要为建立索引时根据该列的数据信息确定索引类型,以及按照索引类型为该列建立索引。从而实现了数据库各列的动态索引建立,并且能够根据实际情况选择合适的索引类型,在减少资源消耗以及人力投入的前提下有效提高数据检索效率。

【技术实现步骤摘要】
一种索引建立方法及设备
本专利技术涉及通信
,特别涉及一种索引建立方法,本申请同时还涉及一种索引建立设备。
技术介绍
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。索引提供指向存储在表的指定列中的数据值的指针,然后根据用户指定的排序顺序对这些指针排序。当需要在数据库中使用索引时,首先搜索索引以找到特定值,然后顺指针找到包含该值的行。随着互联网技术的不断发展,人们每天通过互联网的活动将产生海量的数据,在将这些海量的数据进行存储之后,如何从中快速检索需要的数据成为了技术人员首要考虑的问题。传统数据库的索引都是需要用户自己指定索引类型,然而同一种索引类型在面对不同的数据类型时的查询时间也是不一样的,所以当索引类型设置不当的情况下,用户在数据库的查询时间将会变得十分漫长,从而给用户带来的不良的使用体验。在实现本申请的过程中,专利技术人发现现有技术存在着以下缺陷:(1)现有索引类型单一,导致某些场景查询性能差。传统数据的索引类型较为单一、以B-Tree(B树)索引为主,并不是所有数据特征都适合B-Tree索引,比如Key-Value(键-值)模式查找速度很慢。在带有Join(联接)的SQL(StructuredQueryLanguage,结构化查询语言)中,一条SQL会进行多次查找。如果采用B-Tree查找的话严重影响joinSQL的性能。(2)通过人工分析日志优化索引,导致可运维性差。传统数据库在大量数据的场景下,索引带来的维护开销是很大,因此需要每天晚上看下用户访问的日志来决定哪些列增加新索引、哪些列不需要索引、以及哪些列联合起来建组合索引。这种利用历史统计(HBO)自动调整索引类型完全是人工的,使得可运维性很差。由此可见,如何结合数据库的使用情况为其中各列建立合适的索引,以提高数据检索效率以及减少运维资源,成为本领域技术人员亟待解决的技术问题。
技术实现思路
本专利技术提供了一种索引建立方法。用以对索引建立流程进行优化,在提高数据检索效率的同时减少人力的消耗,该方法包括以下步骤:根据数据库中的列在预设的时间阈值内的索引状态信息确定是否需要为所述列建立索引;若确定需要为所述列建立索引,根据所述列的数据信息确定索引类型,并按照所述索引类型为所述列建立索引。优选地,还包括:若确定无需为所述列建立索引,在所述时间阈值后根据所述列在所述时间阈值内的索引使用状况信息确定是否需要为所述列建立索引。优选地,根据数据库中的列在预设的时间阈值内的索引状态信息确定是否需要为所述列建立索引,具体为:获取所述列在所述时间阈值内的所述索引状态信息;根据所述索引状态信息判断所述列在所述时间阈值内是否使用索引,并在判断结果为是时判断所述列在所述时间阈值内使用索引的次数是否不小于预设的次数阈值;若所述列在所述时间阈值内未使用索引或所述列在在所述时间阈值内使用索引的次数小于所述次数阈值,确认无需为所述列建立索引;若所述列在在所述时间阈值内使用索引的次数不小于所述次数阈值,确定需要为所述列建立索引。优选地,所述索引类型至少包括B-Tree索引、Hash索引、Bitmap索引,根据所述列的数据信息确定索引类型,具体为:若所述列为连续型数值类型,确定所述索引类型为所述B-Tree索引;若所述列会发生Join,确定所述索引类型为所述Hash索引;若所述列的词数大于预设的词数阈值,确定所述索引类型为倒排索引;若所述列词数不大于预设的词数阈值,且不会发生Join以及非连续型数值类型,确定所述索引类型为所述位图索引。优选地,还包括:当接收到用户发送的检索表达式时,将所述检索表达式拆分为多个子表达式;在缓存中查询是否存在与各所述子表达式对应的检索结果;若存在与所述子表达式对应的检索结果,根据所述检索结果以及其他子表达式的检索结果生成用于向所述用户返回的检索响应;若不存在与所述子表达式对应的检索结果,利用所述列的索引对所述子表达式进行检索,并在根据所述检索结果以及其他子表达式的检索结果生成用于向所述用户返回的检索响应之后,将检索结果存储与所述缓存。优选地,在根据数据库中的列在预设的时间阈值内的索引状态信息确定是否需要为所述列建立索引之前,还包括:当所述数据库初始化完成后,按照默认的索引类型为所述数据库中的各个列构建索引,并在达到预设的时刻重新为各所述列构建索引。相应地,本申请还提出了一种索引建立设备,包括:确定模块,根据数据库中的列在预设的时间阈值内的索引状态信息确定是否需要为所述列建立索引;建立模块,在所述确定模块确定需要为所述列建立索引时根据所述列的数据信息确定索引类型,并按照所述索引类型为所述列建立索引。优选地,所述建立模块,还在所述确定模块确定无需为所述列建立索引时,在所述时间阈值后根据所述列在所述时间阈值内的索引使用状况信息确定是否需要为所述列建立索引。优选地,所述确定模块具体用于:获取所述列在所述时间阈值内的所述索引状态信息;根据所述索引状态信息判断所述列在所述时间阈值内是否使用索引,并在判断结果为是时判断所述列在所述时间阈值内使用索引的次数是否不小于预设的次数阈值;若所述列在所述时间阈值内未使用索引或所述列在在所述时间阈值内使用索引的次数小于所述次数阈值,确认无需为所述列建立索引;若所述列在在所述时间阈值内使用索引的次数不小于所述次数阈值,确定需要为所述列建立索引。优选地,所述索引类型至少包括B-Tree索引、Hash索引、Bitmap索引,所述建立模块根据所述列的数据信息确定索引类型,具体为:若所述列为连续型数值类型,确定所述索引类型为所述B-Tree索引;若所述列会发生Join,确定所述索引类型为所述Hash索引;若所述列的词数大于预设的词数阈值,确定所述索引类型为倒排索引;若所述列词数不大于预设的词数阈值,且不会发生Join以及非连续型数值类型,确定所述索引类型为所述位图索引。优选地,还包括:拆分模块,当接收到用户发送的检索表达式时,将所述检索表达式拆分为多个子表达式;查询模块,在缓存中查询是否存在与各所述子表达式对应的检索结果;处理模块,在存在与所述子表达式对应的检索结果时根据所述检索结果以及其他子表达式的检索结果生成用于向所述用户返回的检索响应,以及在不存在与所述子表达式对应的检索结果时利用所述列的索引对所述子表达式进行检索,并在根据所述检索结果以及其他子表达式的检索结果生成用于向所述用户返回的检索响应之后将检索结果存储与所述缓存。优选地,还包括:初始化模块,当所述数据库初始化完成后,按照默认的索引类型为所述数据库中的各个列构建索引,并在达到预设的时刻重新为各所述列构建索引。由此可见,通过应用本申请的技术方案,首先根据数据库中的列在预设的时间阈值内的索引状态信息确定是否需要为该列建立索引,并在确定需要为其建立索引时根据该列的数据信息确定索引类型,以及按照索引类型为该列建立索引。从而实现了数据库各列的动态索引建立,并且能够根据实际情况选择合适的索引类型,在减少资源消耗以及人力投入的前提下有效提高数据检索效率。附图说明图1为本申请提出的一种索引建立方法的流程示意图;图2为本申请具体实施例中的一种数据结构示意图;图3为本申请具体实施例提出的一种流式结果归并流程示意图;图4为本本文档来自技高网
...
一种索引建立方法及设备

【技术保护点】
一种索引建立方法,其特征在于,该方法包括:根据数据库中的列在预设的时间阈值内的索引状态信息确定是否需要为所述列建立索引;若确定需要为所述列建立索引,根据所述列的数据信息确定索引类型,并按照所述索引类型为所述列建立索引。

【技术特征摘要】
1.一种索引建立方法,其特征在于,该方法包括:根据数据库中的列在预设的时间阈值内的索引状态信息确定是否需要为所述列建立索引;若确定需要为所述列建立索引,根据所述列的数据信息确定索引类型,并按照所述索引类型为所述列建立索引。2.如权利要求1所述的方法,其特征在于,还包括:若确定无需为所述列建立索引,在所述时间阈值后根据所述列在所述时间阈值内的索引使用状况信息确定是否需要为所述列建立索引。3.如权利要求2所述的方法,其特征在于,根据数据库中的列在预设的时间阈值内的索引状态信息确定是否需要为所述列建立索引,具体为:获取所述列在所述时间阈值内的所述索引状态信息;根据所述索引状态信息判断所述列在所述时间阈值内是否使用索引,并在判断结果为是时判断所述列在所述时间阈值内使用索引的次数是否不小于预设的次数阈值;若所述列在所述时间阈值内未使用索引或所述列在在所述时间阈值内使用索引的次数小于所述次数阈值,确认无需为所述列建立索引;若所述列在在所述时间阈值内使用索引的次数不小于所述次数阈值,确定需要为所述列建立索引。4.如权利要求1所述的方法,其特征在于,所述索引类型至少包括B树B-Tree索引、哈希Hash索引、位图Bitmap索引,根据所述列的数据信息确定索引类型,具体为:若所述列为连续型数值类型,确定所述索引类型为所述B-Tree索引;若所述列会发生联接Join,确定所述索引类型为所述Hash索引;若所述列的词数大于预设的词数阈值,确定所述索引类型为倒排索引;若所述列词数不大于预设的词数阈值,且不会发生Join以及非连续型数值类型,确定所述索引类型为所述位图索引。5.如权利要求1所述的方法,其特征在于,还包括:当接收到用户发送的检索表达式时,将所述检索表达式拆分为多个子表达式;在缓存中查询是否存在与各所述子表达式对应的检索结果;若存在与所述子表达式对应的检索结果,根据所述检索结果以及其他子表达式的检索结果生成用于向所述用户返回的检索响应;若不存在与所述子表达式对应的检索结果,利用所述列的索引对所述子表达式进行检索,并在根据所述检索结果以及其他子表达式的检索结果生成用于向所述用户返回的检索响应之后,将检索结果存储与所述缓存。6.如权利要求1所述的方法,其特征在于,在根据数据库中的列在预设的时间阈值内的索引状态信息确定是否需要为所述列建立索引之前,还包括:当所述数据库初始化完成后,按照默认的索引类型为所述数据库中的各个列构建索引,并在达到预...

【专利技术属性】
技术研发人员:郑博文潘岳魏闯先
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1