[发明专利]一种获取数据库连接的方法和装置有效
| 申请号: | 201810925115.X | 申请日: | 2018-08-14 |
| 公开(公告)号: | CN109284311B | 公开(公告)日: | 2020-10-23 |
| 发明(设计)人: | 康添 | 申请(专利权)人: | 四川虹美智能科技有限公司 |
| 主分类号: | G06F16/2457 | 分类号: | G06F16/2457 |
| 代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 李世喆 |
| 地址: | 621050 四川*** | 国省代码: | 四川;51 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 获取 数据库连接 方法 装置 | ||
本发明提供了一种获取数据库连接的方法和装置,将设定数量的数据库连接存储于数据库连接池,为构建的每一个线程创建对应的ThreadLocal对象;当线程接收到服务请求时,检测线程对应的ThreadLocal对象中是否存储有数据库连接,如果是,则获取ThreadLocal对象中存储的数据库连接;否则,将数据库连接池中存储的一个数据库连接转存到ThreadLocal对象;当监测到线程结束服务时,将线程对应的ThreadLocal对象存储的数据库连接,返回给数据库连接池,并释放ThreadLocal对象。本发明提供的方案避免了多个处理线程获取相同的数据库连接,从而降低了数据库中数据混乱的风险。
技术领域
本发明涉及计算机技术领域,特别涉及一种获取数据库连接的方法和装置。
背景技术
对于javaweb应用来说,在通过客户端或者终端浏览器发起访问请求时,服务端的容器(tomcat)解析接收到的访问请求,并将解析出的访问请求发送给对应的连接器/连接接口(servlet),即服务器为访问请求创建出处理线程,处理线程通过获取数据库连接,以对数据库中的数据进行增、删、改、查等操作。
目前获取数据库连接的方式主要包括两种,第一种是当处理线程创建后,现为处理线程创建数据库连接,第二种是将一定数量的数据库连接存储在数据库连接池中,处理线程直接从连接池获取数据库连接即可。当有大量的访问请求时,即当有大量的处理线程要获取数据连接时,第一种方法会出现频繁的创建和销毁数据库连接,造成数据库堵塞以及数据库出现性能瓶颈的问题。第二种方法虽然解决了数据库堵塞以及数据库出现性能瓶颈的问题,但是,多个相同功能的处理线程,可能会从数据库连接池中取到相同的数据库连接,对数据库中的数据进行增、删、改、查等操作,导致数据库中的数据混乱。
发明内容
本发明实施例提供了一种获取数据库连接的方法和装置,避免了多个处理线程同时通过相同的数据库连接处理数据库数据,从而降低了数据库中数据混乱的风险。
一种获取数据库连接的方法,将设定数量的数据库连接存储于数据库连接池,还包括:
当监测到至少一个线程构建时,为构建的每一个所述线程创建对应的ThreadLocal对象;
当所述线程接收到外部web应用发送的服务请求时,检测所述线程对应的ThreadLocal对象中是否存储有数据库连接,如果是,则直接获取所述ThreadLocal对象中存储的所述数据库连接;否则,将所述数据库连接池中存储的一个数据库连接转存到所述ThreadLocal对象;
当监测到所述线程结束服务时,将所述线程对应的所述ThreadLocal对象存储的所述数据库连接,返回给所述数据库连接池,并释放所述ThreadLocal对象。
可选地,上述方法进一步包括:为所述数据库连接池构建一个排队队列;
在检测到所述线程对应的ThreadLocal对象中没有数据库连接之后,在将所述数据库连接池中存储的一个数据库连接转存到所述ThreadLocal对象之前,进一步包括:
所述ThreadLocal对象进入所述排队队列;
所述将所述数据库连接池中存储的一个数据库连接转存到所述ThreadLocal对象,包括:
当所述排队队列中包含有至少两个ThreadLocal对象时,按照至少两个所述ThreadLocal对象进入所述排队队列的时间顺序,将所述数据库连接池中一个未被占用的数据库连接转存到所述ThreadLocal对象。
可选地,在所述ThreadLocal对象进入所述排队队列之后,在所述将所述数据库连接池中一个未被占用的数据库连接转存到所述ThreadLocal对象之前,进一步包括:
当一个目标ThreadLocal对象在所述排队队列中的排队时长达到排队时长阈值时,
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川虹美智能科技有限公司,未经四川虹美智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810925115.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:人工智能交互式学习系统及教育方法
- 下一篇:一种异构数据库变更实时通知方法





