一种数据库函数索引实现方法及装置与流程

文档序号:36242815发布日期:2023-12-02 06:06阅读:20来源:国知局
本发明涉及查询语句优化领域,具体提供一种数据库函数索引实现方法及装置。
背景技术
::1、newsql技术近几年发展十分迅猛,国内外都有了较成熟的系统。在业界一些开源系统的实现中,rocksdb起到了核心的存储和查询功能。rocksdb是一个高性能的嵌入式持久化key-value存储。很多开源的数据库的存储都是内嵌的rocksdb,以key-value的存储格式来存储数据。2、而数据库的查询是数据库非常重要的功能之一,数据库进行一些查询时,有时需要频繁的对一个特定范围的数据进行读取,而若在只需要对这个范围的数据读取的情况下,却每一次都读取全部数据,数据库查询语句执行效率不高。技术实现思路1、本发明是针对上述现有技术的不足,提供一种实用性强的数据库函数索引实现方法。2、本发明进一步的技术任务是提供一种设计合理,安全适用的数据库函数索引实现装置。3、本发明解决其技术问题所采用的技术方案是:4、一种数据库函数索引实现方法,具有如下步骤:5、s1、函数索引的生成;6、s2、数据修改和回填对函数索引中数据的操作;7、s3、函数索引的选择与索引数据的查找。8、进一步的,在步骤s1中,索引树的结构增加一个结构,索引结构标志一个索引,里面包含索引的列属性,一个索引的索引列有几个就有几个indexelem;9、indexelem里的结构成员有colmnname即列名,标志了索引列的名字,添加一个function,将函数索引中存放的函数信息放在索引列信息中去。10、进一步的,indexdescriptor是索引描述符,标志一个索引的所有信息,增加一个信息存放函数索引的函数;11、复用现有的expr存放函数表达式,谓词存储string,通过反序列化,得到函数表达式,函数索引是通过查询条件函数索引选定的行,对索引条件有一定要求,即只能是简单查询;12、在语法解析后生成ast对查询语法树进行校验,把函数作为一个虚列存入索引中,所述函数不能为子查询,聚集函数,窗口函数和带返回值的函数,若是则报不支持类型错误。13、进一步的,在步骤s2中,当数据进行增删改操作时,同时对索引进行数据的操作,当创建函数索引后,对数据进行的改动会对索引的函数值进行改变,在这个过程中通过之前在indexdescriptor存储的expr表达式解析出函数表达式;14、在buildvalue构建值的时侯,通过funcexpr计算函数索引列的值,并将这个标志传入接下来的流程中;15、在插入数据编码时判断传入的标志是否需要将一行数据编码插入到二级索引中。16、进一步的,在create index,backfill模式中,使用到schema changer回填方式创建索引,进行回填的函数,回填即当表中存在数据时,新建索引要将表中数据的kv重新导入到索引中去。17、进一步的,在insert中,首先进行(*insertnode).processsourcerow,然后进行(*tableinserter).row和insertrow,最后进行encodeindexes;18、对要插入索引的数据进行编码,通过encodeindexes得到kv后通过insertrow将kv塞入存储中的索引去。19、进一步的,在update中,查询旧值并记录,生成新值,对新值进行表达式处理;20、对于符合谓词条件,不符合条件的行,要进行对应索引数据删除处理。21、进一步的,在步骤s3中,在匹配投影列和索引列后,增加匹配函数,22、如果函数匹配符合规则,则通过computescancost进行cbo的变动,最终由cbo选择函数索引,完成对索引的选择,之后直接读取索引中的数据无需进行计算。23、进一步的,column_name是带有表中列的函数,当select表时where条件左值为函数索引的函数时,触发索引。24、一种数据库函数索引实现装置,包括:至少一个存储器和至少一个处理器;25、所述至少一个存储器,用于存储机器可读程序;26、所述至少一个处理器,用于调用所述机器可读程序,执行一种数据库函数索引实现方法。27、本发明的一种数据库函数索引实现方法及装置和现有技术相比,具有以下突出的有益效果:28、本发明通过大量的实验测得,当搜索函数索引索引列的函数时,并且这个部分的数据查询会被频繁调用的情况下,当cbo选择走函数索引的时候,由于可以直接有序的拉取索引中的计算好的函数值而不需要重新计算,查询效果会大大提升。当多次进行这个函数的数据的查询操作时,计算效果提升也会更加明显。技术特征:1.一种数据库函数索引实现方法,其特征在于,具有如下步骤:2.根据权利要求1所述的一种数据库函数索引实现方法,其特征在于,在步骤s1中,索引树的结构增加一个结构,索引结构标志一个索引,里面包含索引的列属性,一个索引的索引列有几个就有几个indexelem;3.根据权利要求2所述的一种数据库函数索引实现方法,其特征在于,indexdescriptor是索引描述符,标志一个索引的所有信息,增加一个信息存放函数索引的函数;4.根据权利要求3所述的一种数据库函数索引实现方法,其特征在于,在步骤s2中,当数据进行增删改操作时,同时对索引进行数据的操作,当创建函数索引后,对数据进行的改动会对索引的函数值进行改变,在这个过程中通过之前在indexdescriptor存储的expr表达式解析出函数表达式;5.根据权利要求4所述的一种数据库函数索引实现方法,其特征在于,在createindex,backfill模式中,使用到schema changer回填方式创建索引,进行回填的函数,回填即当表中存在数据时,新建索引要将表中数据的kv重新导入到索引中去。6.根据权利要求5所述的一种数据库函数索引实现方法,其特征在于,在insert中,首先进行(*insertnode).processsourcerow,然后进行(*tableinserter).row和insertrow,最后进行encodeindexes;7.根据权利要求6所述的一种数据库函数索引实现方法,其特征在于,在update中,查询旧值并记录,生成新值,对新值进行表达式处理;8.根据权利要求7所述的一种数据库函数索引实现方法,其特征在于,在步骤s3中,在匹配投影列和索引列后,增加匹配函数,9.根据权利要求8所述的一种数据库函数索引实现方法,其特征在于,column_name是带有表中列的函数,当select表时where条件左值为函数索引的函数时,触发索引。10.一种数据库函数索引实现装置,其特征在于,包括:至少一个存储器和至少一个处理器;技术总结本发明涉及查询语句优化领域,具体提供了一种数据库函数索引实现方法及装置,具有如下步骤:S1、函数索引的生成;S2、数据修改和回填对函数索引中数据的操作;S3、函数索引的选择与索引数据的查找。与现有技术相比,本发明当多次进行这个函数的数据的查询操作时,计算效果提升也会更加明显。技术研发人员:陈磊,牟冠学,柴毅,赵春泽受保护的技术使用者:上海沄熹科技有限公司技术研发日:技术公布日:2024/1/16
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1