一种基于openGauss数据库的PL/SQL全局缓存方法技术

技术编号:43370999 阅读:18 留言:0更新日期:2024-11-19 17:51
本发明专利技术涉及一种基于openGauss数据库的PL/SQL全局缓存方法。本方法包括:调用函数,在全局缓存表中查找全局缓存项,如果未找到则新增全局缓存项;检查全局缓存项的数据是否“已初始化”,如果否则检查是否“正在初始化”,如果是则释放该全局缓存项引用,如果否则开始编译数据;如果全局缓存项的数据“已初始化”,检查数据版本是否一致,如果一致则使用该全局缓存项获取编译数据,然后释放该全局缓存项引用;如果数据版本不一致则替换该全局缓存项,然后开始编译数据;保存编译数据,然后释放全局缓存项引用。本方法通过让多会话共享PL/SQL缓存,显著提升了复杂PL/SQL场景在多会话、高并发下的性能表现,降低了内存占用,提高了数据库的健壮性。

【技术实现步骤摘要】

本专利技术涉及opengauss数据库的pl/sql缓存方法,尤其涉及一种基于opengauss数据库的pl/sql全局缓存方法及系统。


技术介绍

1、随着数据库技术的发展,市面上各种数据库层出不穷。许多数据库厂商支持用户通过过程语言非常便利地编写自己的sql函数或存储过程。在opengauss中,提供的过程语言称为pl/sql(plpgsql),通过pl/sql用户可以将一整块计算和一系列查询分组在数据库服务器内部,可以有效防止多轮查询解析,降低了客户端与服务器之间的通信开销,也避免了中间结果的传送。

2、opengauss中对pl/sql程序块的处理流程大致分为两个环节:编译和执行。第一部分是编译,主要任务是对pl/sql程序块进行解释,将其翻译成能被内核能识别的变量、命名空间、以及语法树;第二部分是执行,根据编译得到的语法树进行执行。显而易见,语句块越复杂,涉及的函数越多,编译过程耗时越长。为了加速pl/sql的执行,opengauss提供了会话级的编译缓存,将pl/sql定义的函数或存储过程的编译产物保留在会话内存中,只要该函数或存储过本文档来自技高网...

【技术保护点】

1.一种基于openGauss数据库的PL/SQL全局缓存方法,其特征在于,所述方法包括:

2.根据权利要求1所述的基于openGauss数据库的PL/SQL全局缓存方法,其特征在于,本方法在找不到会话级缓存时,将全局缓存作为二级缓存嵌入到PL/SQL的编译流程中;在本方法中:

3.根据权利要求2所述的基于openGauss数据库的PL/SQL全局缓存方法,其特征在于,本方法中缓存项的状态转移过程如下:

4.根据权利要求1所述的基于openGauss数据库的PL/SQL全局缓存方法,其特征在于,步骤S1中所述的全局缓存项中包含以下信息:PL/SQL编译...

【技术特征摘要】

1.一种基于opengauss数据库的pl/sql全局缓存方法,其特征在于,所述方法包括:

2.根据权利要求1所述的基于opengauss数据库的pl/sql全局缓存方法,其特征在于,本方法在找不到会话级缓存时,将全局缓存作为二级缓存嵌入到pl/sql的编译流程中;在本方法中:

3.根据权利要求2所述的基于opengauss数据库的pl/sql全局缓存方法,其特征在于,本方法中缓存项的状态转移过程如下:

4.根据权利要求1所述的基于opengauss数据库的pl/sql全局缓存方法,其特征在于,步骤s1中所述的全局缓存项中包含以下信息:pl/sql编译后获得的存储过程的语法树、缓存的数据类型、缓存项中的数据、缓存项的状态信息、系统表元信息。

5.根据权利要求1所述的基于opengauss数据库的pl/sql全局缓存方法,其特征在于,步骤s1中所述的全局缓存表用于管理所有的全局缓存项,全局缓存表存储所有pl/sql中函数和包编译的结果,所有线程共享;全局缓存表中...

【专利技术属性】
技术研发人员:曾祥鑫苏章艳
申请(专利权)人:广州海量数据库技术有限公司
类型:发明
国别省市:

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

1