[发明专利]数据库连接的分配和回收方法有效
申请号: | 201510252772.9 | 申请日: | 2015-05-18 |
公开(公告)号: | CN104809247B | 公开(公告)日: | 2019-03-26 |
发明(设计)人: | 张成远;田琪;季锡强 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F16/28 | 分类号: | G06F16/28 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 张焕生;谢丽娜 |
地址: | 100080 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据库连接 分配 回收 方法 | ||
本发明涉及一种数据库连接的分配和回收方法,本发明的方法利用数据库连接池,所述数据库连接池包括全局连接池和逻辑连接池,全局连接池包括队列,逻辑连接池包括对应各数据库的队列。利用两层连接池的队列结构,可以通过全局连接池快速找到最不活跃的数据库对应的队列中的连接或者是从未被使用连接,从而保证了各数据库间连接资源的充分利用。
技术领域
本发明涉及数据库连接的分配和回收方法。
背景技术
随着互联网的不断发展,互联网上的数据量急剧增长,传统单机数据库在处理大规模数据时已经面临明显的瓶颈,各大互联网公司都着手研究分布式数据库的实现方案。
在分布式数据库的实现方案中,包括如下两类:一类是客户端的解决方案,引入一个新的客户端,对数据进行分片处理;另一类是引入数据库中间件,对数据的分片处理由该中间件完成,应用程序只需要访问该数据库中间件即可,整个访问过程和访问原生的数据库几乎一样。
在数据库中间件的解决方案中,针对MySQL的中间件的解决方案相对来说比较多,在实现MySQL中间件的时候需要解决的一个非常重要的一点就是中间件对MySQL连接的管理问题,即连接池的设计与实现。
一般在解决中间件与MySQL实例的连接问题的解决方案主要有两种:
以数据库为单位,每个数据库建立一个连接池;
以MySQL实例为单位,一个MySQL实例上可能有多个数据库,彼此之间共享所有的连接。
以数据库为单位建立连接池的方式存在的不足是:一个MySQL实例本身能承受的连接总数是有限的,且同一个MySQL实例上往往有多个数据库,而各个数据库的访问量一般来说是不一样的,有些数据库可能访问量较大有些数据库可能访问量很小甚至长时间不被访问,在以数据库为单位建立连接池的时候很难预先准确分配各个数据库的连接数。因为不能准确的以数据库分配连接数,导致的问题就是某些数据库对应的连接池经常长期空闲却又消耗MySQL实例上的连接资源,而有些数据库对应的连接池资源紧张却又无法将其他数据库对应的连接池中的空闲连接资源利用起来,同时因为数据库为单位分配连接对MySQL实例上的连接总数的控制也不方便,简单的说就是连接资源利用不充分。
传统的以MySQL实例为单位建立连接池的方式存在的不足:一个MySQL实例上可能存在多个数据库,而通过中间件访问MySQL的时候,可能随机访问其中的一些数据库,所以某些连接可能刚访问了数据库A,返回给连接池以后又从连接池中拿出来去访问数据库B,为了保证访问的正确性,每次访问之前都需要确认某个连接和某个数据库是对应的,也就是说需要在进行SQL操作之前进行一次use db的操作,该操作会保证该连接和对应的数据库关联上,而该操作会增加一次中间件到MySQL实例之间的网络IO,从而导致访问性能下降。
发明内容
本发明的目的是解决中间件方案的连接池实现方法里存在的问题,即MySQL连接资源利用不充分及访问性能降低的问题。
根据本发明的一个方面,提供一种利用数据库连接池分配连接的方法,所述数据库连接池包括全局连接池和逻辑连接池,所述全局连接池包括全局队列,所述逻辑连接池包括各数据库对应的队列,所述方法包括步骤:接收连接请求,该连接请求包含对应数据库的数据库名;当所述逻辑连接池中存在该数据库对应的队列并且该队列非空,则从该队列中取得一个连接,并同时将该连接从该队列中和全局队列中移除,并且返回该连接;当所述逻辑连接池中不存在该数据库对应的队列或者尽管存在但该队列为空,则确定所述全局队列是否为空;当所述全局队列非空,则取出所述全局队列的尾部的连接,建立并保存该连接与所述数据库的对应关系,并且返回该连接,其中当存在该连接与其他数据库的对应关系时,解除该连接与该其他数据库的对应关系;当所述全局队列为空,则判定当前活动连接数是否大于预定的阈值;当活动连接数不大于预定的阈值,则创建新的连接,建立并保存该连接与所述数据库的对应关系,并且返回该连接;当活动连接数大于预定的阈值,则发出连接数报警。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510252772.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:视频指纹提取及检索方法
- 下一篇:用于数据采集系统的数据处理方法及装置