【技术实现步骤摘要】
一种openGauss数据库中基于结果集查询缓存的查询方法
[0001]本专利技术涉及数据库
,尤其涉及一种openGauss数据库中基于结果集查询缓存的查询方法。
技术介绍
[0002]一个查询语句从执行到将结果集返回到客户端,需要经过解析、计划、执行等复杂的处理过程。对于使用大量数据进行复杂运算的查询语句,它们的执行时间受到系统的IO读写、数据库计算、网络传输通信等各种因素影响,导致很难在较短的时间内完成整个处理流程并返回结果。在实际业务场景中,通常使用类似Redis的内存数据结构存储系统作为业务系统与数据库之间的中间件来减轻业务系统对数据库的压力,提升业务响应速度。但是由于复杂业务场景中涉及到大量计算的查询语句,即使使用了部分中间件来减轻数据库的负载,但是在高并发的场景下,仍然会大量的查询语句需要被数据库处理。
[0003]当一个查询语句使用的数据量越大,使用的复杂函数就越多,连接条件也越复杂,因此其需要的执行时间就更长,若相同查询语句多次访问的数据库实例以及其访问的所有实际数据在多次查询中并未改变,且查询的结果集因为数据没有变更不会产生变化,那么在非首次查询后的每一次查询若无需进行重复的扫描磁盘、计算等操作,将节省时间。
[0004]目前openGauss中已经实现了共享缓冲区(Shared Buffers),共享缓冲区是一种内存缓存机制,用于存储数据库中经常访问的数据块,这些数据块是以实际文件在内存中的等价映射映射存在的,查询中使用共享缓冲区可以减少一部分的访盘操作,但是并不能减少对于 ...
【技术保护点】
【技术特征摘要】
1.一种openGauss数据库中基于结果集查询缓存的查询方法,其特征在于,所述方法包括:对查询语句进行语义分析,根据查询语句的类型判断是否能够启用结果集查询缓存;计算能够启用结果集查询缓存的查询语句的哈希值,判断所述查询语句的哈希值是否命中缓存哈希表中的缓存记录;当查询语句的哈希值命中缓存哈希表中的缓存记录,判断所述命中的缓存记录在当前时间节点是否可用,将在当前时间节点可用的缓存记录返回至发起查询的客户端;当所述哈希值没有命中缓存哈希表中的缓存记录,在查询执行时同步新建初始化缓存,并向初始化缓存中填充缓存内容,将生效的缓存加入结果集查询缓存中。2.根据权利要求1所述的openGauss数据库中基于结果集查询缓存的查询方法,其特征在于,对查询语句进行语义分析,根据查询语句的类型判断是否能够启用结果集查询缓存,包括:当查询语句的类型为DDL或DML,将所述查询语句判定为不能启用结果集查询缓存;当查询语句的类型为DQL,判断所述查询语句是否满足结果集查询缓存的约束,当所述查询语句满足结果集查询缓存的约束,将所述查询语句判定为能够启用结果集查询缓存。3.根据权利要求2所述的openGauss数据库中基于结果集查询缓存的查询方法,其特征在于,当查询语句的类型为DDL或DML,将所述查询语句判定为不能启用结果集查询缓存,包括:判断类型为DDL或DML的查询语句是否对查询结果的准确性有影响,当类型为DDL或DML的查询语句对查询结果的准确性有影响,在对所述查询语句进行语义分析时,记录所述查询语句使用的表OID,在查询执行时对缓存哈希表中依赖所述表OID的缓存记录进行失效,从存储引擎获取查询数据返回至发起查询的客户端;当类型为DDL或DML的查询语句对查询结果的准确性没有影响,从存储引擎获取查询数据返回至发起查询的客户端。4.根据权利要求1所述的openGauss数据库中基于结果集查询缓存的查询方法,其特征在于,计算能够启用结果集查询缓存的查询语句的哈希值,包括:通过获取能够启用结果集查询缓存的查询语句的查询树关键结构,从查询树关键结构中提取查询树的节点信息,根据提取的节点信息生成字符序列,计算所述字符序列的哈希值。5.根据权利要求1所述的openGauss数据库中基于结果集查询缓存的查询方法,其特征在于,判断所述查询语句的哈希值是否命中缓存哈希表中的缓存记录,包括:将缓存哈希表分为若干个哈希桶,根据哈希桶的数量对查询语句的哈希值进行取模,在哈希桶内对取模后的哈希值进行匹配;当查询语句的哈希值与缓存哈希表中的缓存记录相匹配时,将所述查询语句的哈希值判定为命中缓存哈希表中的缓存记录;当查询语句的哈希值与缓存哈希表中的缓存记录不匹配时,将所述查询语句的哈希值判定为未命中缓存哈希表中的缓存记录。6.根据权利要求5所述的openGauss数据库中基于结果集查询缓存的查询方法,其特征在于,当查询语句的哈希值与缓存哈希表中的缓存记录相匹配时,将所述查询语句的哈希值判定为命中缓存哈希表中的缓存记录,包括:通过比较查询语句的查询树结构与哈希表
的缓存记录中的查询树结构是否相同,验证所述查询语句与哈希表中的缓存记录是否属于相同的查询。7.根据权利要求1所述的openGauss数据库中基于结果集查询缓存的查询方法...
【专利技术属性】
技术研发人员:蒲境瑞,陈炳达,
申请(专利权)人:广州海量数据库技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。