一种ZNBase数据库的PostgreSQLJDBC优化方法及系统技术方案

技术编号:32245638 阅读:12 留言:0更新日期:2022-02-09 17:49
本发明专利技术公开一种ZNBase数据库的PostgreSQL JDBC优化方法及系统,涉及数据库中间件技术领域,其实现内容包括:基于PostgreSQL JDBC中的LRUCache类,在缓存中查询是否包含SQL与执行节点的对应关系;如果未命中缓存,则利用线程池开启新线程,获取SQL的执行节点,将执行节点和SQL加入缓存,同时,在该执行节点建立连接存入连接池,并使用当前连接继续执行SQL;如果命中缓存,首先取出缓存中SQL与执行节点的对应关系,获取当前执行SQL的执行节点,随后去连接池中查询是否包含该执行节点的连接,如果包含,则用连接池中查询出的执行节点的连接替换当前连接并执行SQL。本发明专利技术通过获取ZNBase数据库操作的执行节点,并对结果进行缓存,省去了在集群内转发SQL的步骤,从而在整体上提升了SQL的执行效率。从而在整体上提升了SQL的执行效率。从而在整体上提升了SQL的执行效率。

【技术实现步骤摘要】
一种ZNBase数据库的PostgreSQL JDBC优化方法及系统


[0001]本专利技术涉及数据库中间件
,具体的说是一种ZNBase数据库的PostgreSQL JDBC优化方法及系统。

技术介绍

[0002]随着互联网金融的兴起,商业银行不管从业务还是技术层面都面临着巨大的冲击,数据库作为银行重要的基础设施,一直承担着压舱石的角色。随着数据量越发庞大、数据模型越发复杂、应用迭代速度加快、并发量的激增,传统商业数据库面临着前所未有的考验。在此背景下,分布式NEWSQL数据库得到飞速发展,产生了一系列数据库新技术新理念。
[0003]ZNBase数据库是一款分布式NEWSQL数据库,拥有事务强一致性、无限横向扩展、多中心数据同步、多副本高可用、国产化安全可靠等特性,并且提供数据库自动部署、自动备份、自动容灾、数据恢复、监控等全套解决方案。ZNBase数据库自研的原生分布式存储引擎支持完整ACID,支持PostgreSQL协议访问。通过PostgreSQL JDBC,可以和数据库集群的某个物理节点建立连接,如果对数据库操作时目标数据副本恰好不存在于当前节点,则需要数据库集群内部进行处理,这会降低SQL的执行性能。

技术实现思路

[0004]本专利技术针对目前技术发展的需求和不足之处,提供一种ZNBase数据库的PostgreSQL JDBC优化方法及系统,来减少集群内各节点之间的通信,提升SQL的执行性能。
[0005]首先,本专利技术提供一种ZNBase数据库的PostgreSQL JDBC优化方法,解决上述技术问题采用的技术方案如下:
[0006]一种ZNBase数据库的PostgreSQL JDBC优化方法,其优化内容包括:
[0007]基于PostgreSQL JDBC中的LRUCache类,在缓存中查询是否包含SQL与执行节点的对应关系,
[0008]如果未命中缓存,则利用线程池开启新线程,获取SQL的执行节点,将执行节点和SQL加入缓存,同时,在该执行节点建立连接存入连接池,并使用当前连接继续执行SQL,
[0009]如果命中缓存,首先取出缓存中SQL与执行节点的对应关系,获取当前执行SQL的执行节点,随后去连接池中查询是否包含该执行节点的连接,如果包含,则用连接池中查询出的执行节点的连接替换当前连接并执行SQL。
[0010]具体的,在缓存中查询是否包含SQL与执行节点的对应关系之前,需要对连接池、线程池和缓存进行初始化,其中:
[0011]连接池用于保存和数据库集群内节点的连接;
[0012]线程池用于开启新线程,获取SQL的执行节点,并存入缓存,且线程池的线程数量为数据库运行操作系统的CPU核数*2;
[0013]缓存用于存放SQL和对应的执行节点。
[0014]更具体的,缓存复用了PostgreSQL JDBC中的LRUCache类,其中,Key为SQL字符串,
Value为RouteInfo类,RouteInfo类中保存了IP端口和节点编号;
[0015]通过SQL字符串,在缓存中进行查询,以确定是否命中缓存。
[0016]优选的,缓存内部维护了一个队列,每当从队列中取出一个值时,该值就移动到队列的头部;当缓存已满而继续添加时,缓存会将队列尾部的值移除。
[0017]具体的,去连接池中查询是否包含该执行节点的连接时,如果不包含,则需要通过PostgreSQL JDBC原生的方法与该执行节点建立连接,随后再用建立的连接替换当前连接并执行SQL。
[0018]其次,本专利技术提供一种ZNBase数据库的PostgreSQL JDBC优化系统,解决上述技术问题采用的技术方案如下:
[0019]一种ZNBase数据库的PostgreSQL JDBC优化系统,其实现涉及缓存、连接池、线程池,所述缓存用于存放SQL和对应的执行节点,所述连接池用于保存和数据库集群内节点的连接,所述线程池用于开启新线程,获取SQL的执行节点,并存入缓存;
[0020]基于缓存、连接池、线程池,优化PostgreSQL JDBC的具体过程包括:
[0021]基于PostgreSQL JDBC中的LRUCache类,在缓存中查询是否包含SQL与执行节点的对应关系,
[0022]如果未命中缓存,则利用线程池开启新线程,获取SQL的执行节点,将执行节点和SQL加入缓存,同时,在该执行节点建立连接存入连接池,并使用当前连接继续执行SQL,
[0023]如果命中缓存,首先取出缓存中SQL与执行节点的对应关系,获取当前执行SQL的执行节点,随后去连接池中查询是否包含该执行节点的连接,如果包含,则用连接池中查询出的执行节点的连接替换当前连接并执行SQL。
[0024]具体的,所涉及缓存复用了PostgreSQL JDBC中的LRUCache类,其中,Key为SQL字符串,Value为RouteInfo类,RouteInfo类中保存了IP端口和节点编号;
[0025]通过SQL字符串,在缓存中进行查询,以确定是否命中缓存。
[0026]更具体的,所涉及缓存内部维护了一个队列,每当从队列中取出一个值时,该值就移动到队列的头部;当缓存已满而继续添加时,缓存会将队列尾部的值移除。
[0027]具体的,所涉及去连接池中查询是否包含该执行节点的连接时,如果不包含,则需要通过PostgreSQL JDBC原生的方法与该执行节点建立连接,随后再用建立的连接替换当前连接并执行SQL。
[0028]优选的,所涉及线程池的线程数量为数据库运行操作系统的CPU核数*2。
[0029]本专利技术的一种ZNBase数据库的PostgreSQL JDBC优化方法及系统,与现有技术相比具有的有益效果是:
[0030]本专利技术对PostgreSQL JDBC进行优化后,可以通过获取目标执行节点,与执行节点建立连接并缓存起来,这样在下次对数据库集群执行相同SQL的时候,会从缓存中取出相应的连接,直接在目标节点服务器上执行SQL,减少了集群内各节点之间的通信,提升了SQL的执行性能。
附图说明
[0031]附图1是本专利技术的方法流程图。
具体实施方式
[0032]为使本专利技术的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本专利技术的技术方案进行清楚、完整的描述。
[0033]实施例一:
[0034]结合附图1,本实施例提出一种ZNBase数据库的PostgreSQL JDBC优化方法,其优化内容包括:
[0035]步骤S101、对连接池、线程池和缓存进行初始化。其中:
[0036]连接池用于保存和数据库集群内节点的连接。
[0037]线程池用于开启新线程,获取SQL的执行节点,并存入缓存,且线程池的线程数量为数据库运行操作系统的CPU核数*2。
[0038]缓存用于存放SQL和对应的执行节点。本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种ZNBase数据库的PostgreSQL JDBC优化方法,其特征在于,其优化内容包括:基于PostgreSQL JDBC中的LRUCache类,在缓存中查询是否包含SQL与执行节点的对应关系,如果未命中缓存,则利用线程池开启新线程,获取SQL的执行节点,将执行节点和SQL加入缓存,同时,在该执行节点建立连接存入连接池,并使用当前连接继续执行SQL,如果命中缓存,首先取出缓存中SQL与执行节点的对应关系,获取当前执行SQL的执行节点,随后去连接池中查询是否包含该执行节点的连接,如果包含,则用连接池中查询出的执行节点的连接替换当前连接并执行SQL。2.根据权利要求1所述的一种ZNBase数据库的PostgreSQL JDBC优化方法,其特征在于,在缓存中查询是否包含SQL与执行节点的对应关系之前,需要对连接池、线程池和缓存进行初始化,其中:连接池用于保存和数据库集群内节点的连接;线程池用于开启新线程,获取SQL的执行节点,并存入缓存,且线程池的线程数量为数据库运行操作系统的CPU核数*2;缓存用于存放SQL和对应的执行节点。3.根据权利要求2所述的一种ZNBase数据库的PostgreSQL JDBC优化方法,其特征在于,缓存复用了PostgreSQL JDBC中的LRUCache类,其中,Key为SQL字符串,Value为RouteInfo类,RouteInfo类中保存了IP端口和节点编号;通过SQL字符串,在缓存中进行查询,以确定是否命中缓存。4.根据权利要求3所述的一种ZNBase数据库的PostgreSQL JDBC优化方法,其特征在于,缓存内部维护了一个队列,每当从队列中取出一个值时,该值就移动到队列的头部;当缓存已满而继续添加时,缓存会将队列尾部的值移除。5.根据权利要求1所述的一种ZNBase数据库的PostgreSQL JDBC优化方法,其特征在于,去连接池中查询是否包含该执行节点的连接时,如果不包含,则需要通过PostgreSQL JDBC原生的方法与该执行节点建立连接,随后再用建立的连接替换当前连接并执行SQL。6.一种ZNBase数据...

【专利技术属性】
技术研发人员:孙初雄陈磊卢健马浩严郑志伟
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

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

1