关键字:
KingbaseES、JDBC、缓存释放、人大金仓
背景描述
在数据库服务器的使用过程中,为了提高客户端业务的执行效率,提供了数据库缓存功能,该缓存功能可以缓存多种不同的数据库资源。数据库端缓存的主要目的是为了提升性能,那么何时取消缓存资源成为一个关键问题。目前,可检索的专利技术大多是通过新增线程或特定功能模块来完成客户端与服务器端缓存资源的协调工作。
功能设计
为了合理的低成本的解决数据库服务器端缓存资源的释放问题,Kingbase-JDBC提出结合JAVA虚拟机中的虚引用功能,实现自动关闭服务器端缓存资源的方法。
图1展示了自动关闭服务器端预处理语句对象缓存资源功能流程图。首先,在系统中创建一个map集合和引用队列,集合key是语句对象的虚引用,value是语句对象的名称,队列中存储待清空的虚引用。在系统运行期间,将自动把检测到的虚可到达对象的引用放入待清空引用队列中。当业务需要访问数据库时,先创建并解析语句对象,然后判断待清空的引用队列是否为空,若否,则循环获取队列成员,并用于获取map中的语句对象名称,向服务器发送关闭该语句对象的报文,使服务器端释放相关资源,直到队列为空;若是,则直接进入下一步。接着判断当前对象是否使用服务器端缓存,若否,则直接发送解析及进行后续处理;若是,则使用当前对象创建虚引用,并放入map集合当中,然后判断当前对象是否存在旧的虚引用,若是,则将旧的虚引用放入待清空引用队列,然后更新对象的虚引用;若否,则直接更新对象的虚引用。随后发送解析并完成后续处理。若存在下一个业务请求,则重复上述过程,否则流程结束。
图1:自动关闭服务器端预处理语句对象缓存资源功能流程图
技术效果
Kingbase-JDBC的自动关闭服务器端缓存资源的方法,充分利用了虚拟机自带功能,不仅实现了适时的释放服务器端缓存资源,而且无任何新增模块,对系统整体的运行效率影响较小。方法设计巧妙,耗费系统资源较少,且可运用于多种服务器端资源的自动释放,具有较高的应用价值。
参考文档:
无