CN106326446B - 分布式数据库连接方法和装置 - Google Patents

分布式数据库连接方法和装置 Download PDF

Info

Publication number
CN106326446B
CN106326446B CN201610737573.1A CN201610737573A CN106326446B CN 106326446 B CN106326446 B CN 106326446B CN 201610737573 A CN201610737573 A CN 201610737573A CN 106326446 B CN106326446 B CN 106326446B
Authority
CN
China
Prior art keywords
connection
grouping
database
idle
application program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610737573.1A
Other languages
English (en)
Other versions
CN106326446A (zh
Inventor
王军伟
宋威
张学诚
刘璟宇
韩国忠
何涛
余倩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Vipshop Guangzhou Software Co Ltd
Original Assignee
Guangzhou Pinwei Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangzhou Pinwei Software Co Ltd filed Critical Guangzhou Pinwei Software Co Ltd
Priority to CN201610737573.1A priority Critical patent/CN106326446B/zh
Publication of CN106326446A publication Critical patent/CN106326446A/zh
Application granted granted Critical
Publication of CN106326446B publication Critical patent/CN106326446B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Abstract

本发明公开了一种分布式数据库连接方法,包括步骤:从预先设置的数据库实例分组中确定所述连接请求所属的数据库连接分组;查询所述数据库连接分组中是否存在空闲连接;若所述数据库连接分组中存在空闲连接,则运用所述数据库连接分组的空闲连接创建所述应用程序的连接;若所述数据库连接分组中不存在空闲连接,则查询所属数据库实例中其他数据库连接分组中是否存在空闲连接,以运用其他数据库连接分组中的空闲连接创建所述应用程序的连接。本发明还公开了一种分布式数据库连接装置。本发明实现了数据库空闲连接的复用,并能够异步整理连接池线程。

Description

分布式数据库连接方法和装置
技术领域
本发明涉及数据库技术领域,尤其涉及一种分布式数据库连接方法和装置。
背景技术
数据库连接是一种非常关键且有限的昂贵的资源,如果数据库连接被反复地打开和关闭,将会严重浪费数据库大量的系统资源,同时会降低数据库的访问效率。一种高效的对数据库连接的管理方法将能够明显的降低数据库对系统资源的消耗,同时提升数据库和访问该数据库的应用程序性能。
在数据库连接中,数据库连接池是一种通过复用数据库连接来减少频繁的打开和关闭连接进而提升数据库操作性能的方案。
在现有技术中,数据连接的步骤包括以下几个:
1、应用程序向连接池申请连接,连接池确认是否有空闲连接,如果有空闲连接则选择一个返回给应用程序,没有空闲连接则创建一个新的数据库连接并把该连接状态设置为使用中同时返回给应用程序;
2、应用程序拿到数据库连接后进行数据库操作;
3、操作完毕后应用程序把数据库连接归还给连接池,同时把连接状态设置为空闲;
4、连接池会定期清理空闲时间过长的连接以降低数据库的连接数量;
5、连接池通过合理的最大连接数的设置可以有效的保障数据库的可用性。
目前的数据库连接建立的过程为:
1、每个数据库对应一个连接池,加入每个连接池的最大连接数设置为20个,但是当同一个数据库实例的8个数据库中存在冷热数据导致不同时刻访问量差别较大时,访问量大的连接池连接不够用而访问量少的连接池却存在空闲连接而无法被复用导致资源浪费;
2、每个连接池都有一些固定的后台线程做空闲连接检查、新建连接、关闭连接等维护连接的操作,假如每个连接池有3个线程,那么每个应用程序将有128*3=384个线程,二大部分维护连接的操作只需要少量线程即可完成导致连接池浪费了大量应用程序的系统资源,降低了应用程序的服务能力。
本发明旨在解决在分布式数据中传统连接池的一些不足,包括:
1、同一个数据库实例的不同数据库之间的连接无法复用导致资源浪费;
2、连接池线程数过多,浪费了大量应用程序的系统资源,降低了应用程序的服务能力。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在解决分布式数据库中传统连接池的一些不足,包括加同一个数据库实例的不同数据库之间的连接无法复用导致资源浪费和连接池线程数过多,浪费了应用程序的系统资源,降低了应用程序的服务能力。
为实现上述目的,本发明提供的一种分布式数据连接方法,包括以下步骤:
接收应用程序的连接请求,从预先设置的数据库实例分组中确定所述连接请求所属的数据库连接分组;
查询所述数据库连接分组中是否存在空闲连接;
若所述数据库连接分组中存在空闲连接,则运用所述数据库连接分组的空闲连接创建所述应用程序的连接;
若所述数据库连接分组中不存在空闲连接,则查询所属数据库实例中其他数据库连接分组中是否存在空闲连接,以运用其他数据库连接分组中的空闲连接创建所述应用程序的连接。
优选地,所述若所述数据库连接分组中不存在空闲连接,则查询所属数据库实例中其他数据库连接分组中是否存在空闲连接,以运用其他数据库连接分组中的空闲连接创建所述应用程序的连接之后,还包括:
若所属数据库实例连接分组中的其他数据库连接分组中存在空闲连接,则运用该数据库连接分组中的空闲连接创建所述应用程序的连接。
若所属数据库实例连接分组中的其他数据库连接分组中不存在空闲连接,则创建一个指向所述数据库的新连接,运用所述新连接创建所述应用程序的连接。
优选地,所述从预先设置的数据库分组中确定所述连接请求所属的数据库连接分组的步骤包括:
从预先设置的数据库实例分组中确定所述连接请求所属的数据库实例连接分组;并从所述确定的数据库实例连接分组中确定所述应用程序的连接请求所属的数据库连接分组。
优选地,包括:
在查询数据库连接分组中是否存在空闲连接时,通过预设数量的线程,对连接池中的对应数据库连接分组中的所有连接进行空闲连接查询操作。
优选地,所述在查询数据库中是否存在空闲连接时,通过预设数量的线程,对连接池中的所有连接进行空闲连接检查操作之后,还包括:
若检查到运行的空闲连接断开,则使用线程将断开的空闲连接重新连接;
若检查到运行的空闲连接数量超过目标数量,则使用线程将超过目标数量的空闲连接关闭。
此外,为实现上述目的,本发明还提供一种分布式数据连接装置,包括:
接收模块,用于接收应用程序的连接请求;
确认模块,用于从预先设置的数据库实例分组中确定所述连接请求所属的数据库连接分组;
查询模块,用于查询所述数据库连接分组中是否存在空闲连接;
连接模块,用于若所述数据库连接分组中存在空闲连接,则运用所述数据库连接分组的空闲连接创建所述应用程序的连接;
遍历模块,用于若所述数据库连接分组中不存在空闲连接,则查询所属数据库实例中其他数据库连接分组中是否存在空闲连接,以运用其他数据库连接分组中的空闲连接创建所述应用程序的连接。
优选地,还包括:
所述连接模块,还用于若所属数据库实例连接分组中的其他数据库连接分组中不存在空闲连接,则创建一个指向所述数据库的新连接,运用所述新连接创建所述应用程序的连接。
优选地,还包括:
所述确认模块,还用于从预先设置的数据库实例分组中确定所述连接请求所属的数据库实例连接分组;并从所述确定的数据库实例连接分组中确定所述应用程序的连接请求所属的数据库连接分组。
优选地,还包括:
检查模块,用于在查询数据库中是否存在空闲连接时,通过预设数量的线程,对连接池中的所有连接进行空闲连接查询操作。
优选地,还包括:
操作模块,用于若检查到有运行的空闲连接断开,则使用线程将断开的连接关联;还用于若检查到有运行的空闲连接数量超过目标数量,则使用线程将目标数量以外的空闲连接关闭。
本发明通过接收应用程序的连接请求,从预先设置的数据库实例分组中确定所述连接请求所属的数据库连接分组;查询所述数据库连接分组中是否存在空闲连接;若所述数据库连接分组中存在空闲连接,则运用所述数据库连接分组的空闲连接创建所述应用程序的连接;若所述数据库连接分组中不存在空闲连接,则查询所属数据库实例中其他数据库连接分组中是否存在空闲连接,以运用其他数据库连接分组中的空闲连接创建所述应用程序的连接。有效的避免了同一个数据库实例的不同数据库之间的连接无法复用导致资源浪费,且避免了连接池线程数过多,浪费了大量应用程序的系统资源,降低了应用程序的服务能力。
附图说明
图1为本发明分布式数据库连接方法的第一实施例的流程示意图;
图2为本发明分布式数据库连接方法的第二实施例的流程示意图;
图3为本发明分布式数据库连接方法的第三实施例的流程示意图;
图4为本发明分布式数据库连接方法的第四实施例的流程示意图;
图5为本发明分布式数据库连接方法的第五实施例的流程示意图;
图6为本发明分布式数据库连接装置的第一实施例的功能模块示意图;
图7为本发明分布式数据库连接装置的第二实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:接收应用程序的连接请求,从预先设置的数据库分组中确定所述连接请求所属的数据库连接分组;并查询所述数据库连接分组中是否存在空闲连接;若所述数据库连接分组中存在空闲连接,则运用所述数据库连接分组的空闲连接创建所述应用程序的连接;若所述数据库连接分组中不存在空闲连接,则查询所属数据库实例中其他数据库连接分组中是否存在空闲连接。有效避免同一个数据库实例的不同数据库之间的连接无法复用导致资源浪费;连接池线程数过多,浪费了大量应用程序的系统资源,降低了应用程序的服务能力。
由于现有数据库中,不能合理分配空闲连接造成数据库中空闲连接数量过多导致资源浪费,且连接池中线程数过多浪费了大量应用程序的系统资源,降低了应用程序的服务能力。
基于上述问题,本发明提供一种分布式数据库连接方法。
参照图1,图1为本发明分布式数据库连接方法的第一实施例的流程示意图。
在一实施例中,所述方法包括:
步骤S1,接收应用程序的连接请求,从预先设置的数据库实例分组中确定所述连接请求所属的数据库连接分组;
数据库连接池在接收到应用程序的连接请求时,根据应用程序的名称,对应已经分组的数据库实例名称,并对应至该数据库实例分组中的数据库分组。所述数据库连接分组中,存在有从连接池分配的连接,连接的数量由数据库管理员进行分配至数据库实例中,并根据数据库实例下的数据库连接分组的数据库内存大小分配。
步骤S2,查询所述数据库连接分组中是否存在空闲连接;
在所述应用程序发送的连接请求对应的数据库连接分组中查询是否存在空闲连接,所述空闲连接,为没有应用程序使用的连接。
步骤S3,若所述数据库连接分组中存在空闲连接,则运用所述数据库连接分组的空闲连接创建所述应用程序的连接。
在数据库连接分组中,没有应用程序使用的连接,为空闲连接。应用程序的连接请求,对应的数据库连接分组中有空闲连接,则使用该空闲连接,为应用程序连接请求创建所述应用程序的连接。
步骤S4,若所述数据库连接分组中不存在空闲连接,则查询所属数据库实例中其他数据库连接分组中是否存在空闲连接,以运用其他数据库连接分组中的空闲连接创建所述应用程序的连接。
应用程序的连接请求,在数据库实例分组中的对应数据库连接分组中没有空闲连接;则查询在该数据库实例分组中的其他数据库连接分组中是否存在空闲连接。例如,数据库实例DATA中有TEST1、TEST2和TEST3数据库连接分组,应用程序发送的连接请求,对应的为数据库实例DATA中的TEST1数据库连接分组,但当前TEST1数据库连接分组中没有空闲连接,则查询数据库实例DATA下的TEST2及TEST3中是否有空闲连接。
本实施例中,连接池接收到应用程序的连接请求后,对应上已经设置好的数据库实例分组中的数据库连接分组,查询所述数据库连接分组中是否存在空闲连接,若对应数据库连接分组中有空闲连接,则使用该空闲连接为应用程序创建新连接;若对应数据库连接分组中没有空闲连接,则查询对应数据库实例分组中的其他数据库连接分组中是否存在空闲连接。例如,数据库实例DATA中有TEST1、TEST2和TEST3数据库连接分组,应用程序发送的连接请求,对应的为数据库实例DATA中的TEST1数据库连接分组,若当前TEST1中有空闲连接,则使用该空闲连接为应用程序创建连接;若当前TEST1数据库连接分组中没有空闲连接,则查询数据库实例DATA下的TEST2及TEST3中是否有空闲连接。
参照图2,图2为本发明分布式数据库连接方法的第二实施例的流程示意图。基于上述方法的第一实施例,在所述步骤S4,若所述数据库连接分组中不存在空闲连接,则查询所属数据库实例中其他数据库连接分组中是否存在空闲连接,以运用其他数据库连接分组中的空闲连接创建所述应用程序的连接之后,还包括:
步骤S5,若所属数据库实例连接分组中的其他数据库连接分组中存在空闲连接,则运用该数据库连接分组中的空闲连接创建所述应用程序的连接。
在本实施例中,基于步骤S4,应用程序的连接请求,对应到预先设置好的数据库实例下的数据库连接分组中,若该数据库连接分组中没有空闲连接,则查询该数据库实例下的其他数据库连接分组中是否存在空闲连接,若当中有数据库连接分组中存在空闲连接,通过数据库SQL语句的执行结果,反馈出有空闲连接存在的数据库连接分组的数据库名,并使用“use”命令将所述应用程序连接请求切换至该数据库连接分组中,使用该数据库连接分组中的空闲连接为应用程序创建连接。使用同期数据库实例中的其他数据库连接分组的空闲连接复用,能够明显的降低数据库对系统资源的消耗,同时提升数据库和访问该数据库的应用程序的性能。
参照图3,图3为本发明分布式数据库连接方法的第三实施例的流程示意图。基于上述方法的第一实施例,在步骤S4,若所述数据库连接分组中不存在空闲连接,则查询所属数据库实例中其他数据库连接分组中是否存在空闲连接,以运用其他数据库连接分组中的空闲连接创建所述应用程序的连接之后,包括步骤S6:
步骤S6,若所属数据库实例连接分组中的其他数据库连接分组中不存在空闲连接,则创建一个指向所述数据库的新连接,运用所述新连接创建所述应用程序的连接。
在本实施例中,基于步骤S4,应用程序的连接请求,对应到预先设置好的数据库实例下的数据库连接分组中,若该数据库连接分组中没有空闲连接,则查询该数据库实例下的其他数据库连接分组中是否存在空闲连接,若当前数据库实例下,所有的数据库连接分组中都没有空闲连接,则在应用程序对应的数据库连接分组中重新创建一个连接,用于对应应用程序的连接请求,并将该连接归类至应用程序对应的数据库连接分组下。
参照图4,图4为本发明分布式数据库连接方法的第五实施例的流程示意图。基于上述方法的第一实施例,在接收应用程序的连接请求,并从预先设置的数据库分组中确定所述连接请求所述的数据库连接分组之前,还包括:
步骤S7,从预先设置的数据库实例分组中确定所述连接请求所属的数据库实例连接分组;并从所述确定的数据库实例连接分组中确定所述应用程序的连接请求所属的数据库连接分组。
在本实施例中,设置将数据库按照实例进行分组,每个实例对应为一个数据库分组,并根据数据库实例的内容,将数据库分配至该实例中,作为该数据库实例下的数据库连接分组。应用程序发送的连接请求,根据接收到的应用程序的连接请求中的信息,包括名称、类别等;根据应用程序的连接信息,对应至数据库实例中。例如,在连接池中有3个数据库实例,其中DATA1、DATA2及DATA3数据库实例中,所述应用程序连接请求中,根据名称对应至DATA2数据库实例中。进一步的,根据应用程序连接请求中的名称信息对应至数据库实例中的数据库连接分组。例如,在数据库实例DATA2中有TEST1、TEST2及TEST3数据库连接分组,根据所述应用程序连接请求中的类别信息,对应至数据库连接分组TEST1。
参照图5,图5为本发明分布式数据库连接方法的第四实施例的流程示意图。基于上述方法的第一至第四实施例,在本发明分布式数据库连接方法中,还包括异步整理连接池连接的操作,包括:
步骤S8,在查询数据库连接分组中是否存在空闲连接时,通过预设数量的线程,对连接池中的对应数据库连接分组中的所有连接进行空闲连接查询操作;
在数据连接池中,通过数据库实例的分组并将连接分配至数据库实例下的数据库连接分组中,所有数据库连接分组下的连接都根据当前是否有使用的前提下分为空闲连接和使用连接。为了管理连接池中的连接,需通过预设数量的线程对数据库连接进行有效率的管理,所述预设数量的线程,为数据库管理员进行设置,根据连接池中连接的数量,设置相应数量的线程进行管理。例如,线程数量与连接池中连接的数量为1比5的比例,若当前连接池中有连接数量为20,则需提供4个线程对连接进行管理。
步骤S9,若检查到运行的空闲连接断开,则使用线程将断开的空闲连接重新连接;
线程检查数据库实例下的数据库连接分组中的连接,在线程中,预设了关联连接的SQL语句,在使用线程检查数据库连接分组的连接时,若有连接断开,则触发线程中的SQL语句。通过线程中定义的处理断开连接SQL语句执行,将断开的连接重新关联。所述断开的连接,即不能被使用的连接,在连接池中,断开的连接若未及时重新关联上,则会造成数据库的冗余,影响数据库连接的效率。
步骤S10,若检查到运行的空闲连接数量超过目标数量,则使用线程将超过目标数量的空闲连接关闭。
线程检查数据库实例下的数据库连接分组中的连接,在线程中,预设了关闭连接的SQL语句。线程检查到数据库实例下的数据库连接分组中有空闲连接的数量超过目标数量,则触发线程中的SQL语句。通过线程中定义的关闭连接的SQL语句的执行,超出目标数量的连接直接关闭。所述目标数量,为数据库连接分组中的固定空闲连接数量,是基于数据库的大小和连接的频率,由数据库管理员进行设置。因数据库连接是一种非常关联且有限的昂贵资源,所以为了数据库的系统资源和访问效率,需将数据库连接控制在一个范围之内,多出的空闲连接则直接关闭。
上述第一至第五实施例的分布式数据库连接方法的执行主体均可以为带有数据库应用程序的电子设备。更进一步地,该分布式数据库连接方法可以由安装有数据库的客户端程序实现,其中,该电子设备可以包括但不限于手机、pad、笔记本电脑等。
本发明进一步提供一种分布式数据连接装置。
参照图6,图6为本发明分布式数据库连接装置的较佳的功能模块示意图。
在一实施例中,所述装置包括:接收模块10、确认模块20、查询模块30、连接模块40及遍历模块50。
接收模块10,用于接收应用程序的连接请求;
确认模块20,用于从预先设置的数据库分组中确定所述连接请求所属的数据库连接分组;
数据库连接池在接收到应用程序的连接请求时,根据应用程序的名称,对应已经分组的数据库实例名称,并对应至该数据库实例分组中的数据库分组。所述数据库连接分组中,存在有从连接池分配的连接,连接的数量由数据库管理员进行分配至数据库实例中,并根据数据库实例下的数据库连接分组的数据库内存大小分配。
查询模块30,用于查询所述数据库连接分组中是否存在空闲连接;
在所述应用程序发送的连接请求对应的数据库连接分组中查询是否存在空闲连接,所述空闲连接,为没有应用程序使用的连接。
连接模块40,用于若所述数据库连接分组中存在空闲连接,则运用所述数据库连接分组的空闲连接创建所述应用程序的连接。
在数据库连接分组中,没有应用程序使用的连接,为空闲连接。应用程序的连接请求,对应的数据库连接分组中有空闲连接,则使用该空闲连接,为应用程序连接请求创建所述应用程序的连接。
遍历模块50,用于若所述数据库连接分组中不存在空闲连接,则查询所属数据库实例中其他数据库连接分组中是否存在空闲连接,以运用其他数据库连接分组中的空闲连接创建所述应用程序的连接。
应用程序的连接请求,在数据库实例分组中的对应数据库连接分组中没有空闲连接;则查询在该数据库实例分组中的其他数据库连接分组中是否存在空闲连接。例如,数据库实例DATA中有TEST1、TEST2和TEST3数据库连接分组,应用程序发送的连接请求,对应的为数据库实例DATA中的TEST1数据库连接分组,但当前TEST1数据库连接分组中没有空闲连接,则查询数据库实例DATA下的TEST2及TEST3中是否有空闲连接。
本实施例中,连接池接收到应用程序的连接请求后,对应上已经设置好的数据库实例分组中的数据库连接分组,查询所述数据库连接分组中是否存在空闲连接,若对应数据库连接分组中有空闲连接,则使用该空闲连接为应用程序创建新连接;若对应数据库连接分组中没有空闲连接,则查询对应数据库实例分组中的其他数据库连接分组中是否存在空闲连接。例如,数据库实例DATA中有TEST1、TEST2和TEST3数据库连接分组,应用程序发送的连接请求,对应的为数据库实例DATA中的TEST1数据库连接分组,若当前TEST1中有空闲连接,则使用该空闲连接为应用程序创建连接;若当前TEST1数据库连接分组中没有空闲连接,则查询数据库实例DATA下的TEST2及TEST3中是否有空闲连接。
进一步地,所述遍历模块50,还用于若所属数据库实例连接分组中的其他数据库连接分组中存在空闲连接,则运用该数据库连接分组中的空闲连接创建所述应用程序的连接。
在本实施例中,基于遍历模块50,应用程序的连接请求,对应到预先设置好的数据库实例下的数据库连接分组中,若该数据库连接分组中没有空闲连接,则查询该数据库实例下的其他数据库连接分组中是否存在空闲连接,若当中有数据库连接分组中存在空闲连接,通过数据库SQL语句的执行结果,反馈出有空闲连接存在的数据库连接分组的数据库名,并使用“use”命令将所述应用程序连接请求切换至该数据库连接分组中,使用该数据库连接分组中的空闲连接为应用程序创建连接。使用同期数据库实例中的其他数据库连接分组的空闲连接复用,能够明显的降低数据库对系统资源的消耗,同时提升数据库和访问该数据库的应用程序的性能。
进一步的,所述连接模块40,还用于若所属数据库实例连接分组中的其他数据库连接分组中不存在空闲连接,则创建一个指向所述数据库的新连接,运用所述新连接创建所述应用程序的连接。
在本实施例中,基于遍历模块50,应用程序的连接请求,对应到预先设置好的数据库实例下的数据库连接分组中,若该数据库连接分组中没有空闲连接,则查询该数据库实例下的其他数据库连接分组中是否存在空闲连接,若当前数据库实例下,所有的数据库连接分组中都没有空闲连接,则在应用程序对应的数据库连接分组中重新创建一个连接,用于对应应用程序的连接请求,并将该连接归类至应用程序对应的数据库连接分组下。
进一步的,所述确认模块20,还用于从预先设置的数据库实例分组中确定所述连接请求所属的数据库实例连接分组;并从所述确定的数据库实例连接分组中确定所述应用程序的连接请求所属的数据库连接分组。
在本实施例中,设置将数据库按照实例进行分组,每个实例对应为一个数据库分组,并根据数据库实例的内容,将数据库分配至该实例中,作为该数据库实例下的数据库连接分组。应用程序发送的连接请求,根据接收到的应用程序的连接请求中的信息,包括名称、类别等;根据应用程序的连接信息,对应至数据库实例中。例如,在连接池中有3个数据库实例,其中DATA1、DATA2及DATA3数据库实例中,所述应用程序连接请求中,根据名称对应至DATA2数据库实例中。进一步的,根据应用程序连接请求中的名称信息对应至数据库实例中的数据库连接分组。例如,在数据库实例DATA2中有TEST1、TEST2及TEST3数据库连接分组,根据所述应用程序连接请求中的类别信息,对应至数据库连接分组TEST1。
参照图7,图7为本发明分布式数据库连接装置的第五实施例的功能模块示意图。所述装置还包括检查模块60及操作模块70。
检查模块60,用于在查询数据库连接分组中是否存在空闲连接时,通过预设数量的线程,对连接池中的对应数据库连接分组中的所有连接进行空闲连接查询操作;
在数据连接池中,通过数据库实例的分组并将连接分配至数据库实例下的数据库连接分组中,所有数据库连接分组下的连接都根据当前是否有使用的前提下分为空闲连接和使用连接。为了管理连接池中的连接,需通过预设数量的线程对数据库连接进行有效率的管理,所述预设数量的线程,为数据库管理员进行设置,根据连接池中连接的数量,设置相应数量的线程进行管理。例如,线程数量与连接池中连接的数量为1比5的比例,若当前连接池中有连接数量为20,则需提供4个线程对连接进行管理。
操作模块70,用于若检查到运行的空闲连接断开,则使用线程将断开的空闲连接重新连接;
线程检查数据库实例下的数据库连接分组中的连接,在线程中,预设了关联连接的SQL语句,在使用线程检查数据库连接分组的连接时,若有连接断开,则触发线程中的SQL语句。通过线程中定义的处理断开连接SQL语句执行,将断开的连接重新关联。所述断开的连接,即不能被使用的连接,在连接池中,断开的连接若未及时重新关联上,则会造成数据库的冗余,影响数据库连接的效率。
所述操作模块70,还用于若检查到运行的空闲连接数量超过目标数量,则使用线程将超过目标数量的空闲连接关闭。
线程检查数据库实例下的数据库连接分组中的连接,在线程中,预设了关闭连接的SQL语句。线程检查到数据库实例下的数据库连接分组中有空闲连接的数量超过目标数量,则触发线程中的SQL语句。通过线程中定义的关闭连接的SQL语句的执行,超出目标数量的连接直接关闭。所述目标数量,为数据库连接分组中的固定空闲连接数量,是基于数据库的大小和连接的频率,由数据库管理员进行设置。因数据库连接是一种非常关联且有限的昂贵资源,所以为了数据库的系统资源和访问效率,需将数据库连接控制在一个范围之内,多出的空闲连接则直接关闭。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种分布式数据库连接方法,其特征在于,所述方法包括以下步骤:
接收应用程序的连接请求,从预先设置的数据库实例分组中确定所述连接请求所属的数据库连接分组,其中,所述数据库连接分组中包含根据数据库内存大小对应分配的预设数量数据连接;
查询所述数据库连接分组中是否存在空闲连接;
若所述数据库连接分组中存在空闲连接,则运用所述数据库连接分组的空闲连接创建所述应用程序的连接;
若所述数据库连接分组中不存在空闲连接,则查询所属数据库实例中其他数据库连接分组中是否存在空闲连接,以运用其他数据库连接分组中的空闲连接创建所述应用程序的连接。
2.如权利要求1所述的分布式数据库连接方法,其特征在于,所述若所述数据库连接分组中不存在空闲连接,则查询所属数据库实例中其他数据库连接分组中是否存在空闲连接,以运用其他数据库连接分组中的空闲连接创建所述应用程序的连接之后,还包括:
若所属数据库实例连接分组中的其他数据库连接分组中存在空闲连接,则运用该数据库连接分组中的空闲连接创建所述应用程序的连接;
若所属数据库实例连接分组中的其他数据库连接分组中不存在空闲连接,则创建一个指向所述数据库的新连接,运用所述新连接创建所述应用程序的连接。
3.如权利要求1所述的分布式数据库连接方法,其特征在于,所述从预先设置的数据库分组中确定所述连接请求所属的数据库连接分组的步骤包括:
从预先设置的数据库实例分组中确定所述连接请求所属的数据库实例连接分组;并从所述确定的数据库实例连接分组中确定所述应用程序的连接请求所属的数据库连接分组。
4.如权利要求1至3任一项所述的分布式数据库连接方法,其特征在于,所述方法包括:
在查询数据库连接分组中是否存在空闲连接时,通过预设数量的线程,对连接池中的对应数据库连接分组中的所有连接进行空闲连接查询操作。
5.如权利要求4所述的分布式数据库连接方法,其特征在于,所述在查询数据库中是否存在空闲连接时,通过预设数量的线程,对连接池中的所有连接进行空闲连接检查操作之后,还包括:
若检查到运行的空闲连接断开,则使用线程将断开的空闲连接重新连接;
若检查到运行的空闲连接数量超过目标数量,则使用线程将超过目标数量的空闲连接关闭。
6.一种分布式数据库连接装置,其特征在于,包括:
接收模块,用于接收应用程序的连接请求;
确认模块,用于从预先设置的数据库实例分组中确定所述连接请求所属的数据库连接分组,其中,所述数据库连接分组中包含根据数据库内存大小对应分配的预设数量数据连接;
查询模块,用于查询所述数据库连接分组中是否存在空闲连接;
连接模块,用于若所述数据库连接分组中存在空闲连接,则运用所述数据库连接分组的空闲连接创建所述应用程序的连接;
遍历模块,用于若所述数据库连接分组中不存在空闲连接,则查询所属数据库实例中其他数据库连接分组中是否存在空闲连接,以运用其他数据库连接分组中的空闲连接创建所述应用程序的连接。
7.如权利要求6所述的分布式数据库连接装置,其特征在于,所述遍历模块,还用于若所属数据库实例连接分组中的其他数据库连接分组中存在空闲连接,则运用该数据库连接分组中的空闲连接创建所述应用程序的连接;
所述连接模块,还用于若所属数据库实例连接分组中的其他数据库连接分组中不存在空闲连接,则创建一个指向所述数据库的新连接,运用所述新连接创建所述应用程序的连接。
8.如权利要求7所述的分布式数据库连接装置,其特征在于,所述确认模块,还用于从预先设置的数据库实例分组中确定所述连接请求所属的数据库实例连接分组;并从所述确定的数据库实例连接分组中确定所述应用程序的连接请求所属的数据库连接分组。
9.如权利要求6至8任一项所述的分布式数据库连接装置,其特征在于,还包括:
检查模块,用于在查询数据库中是否存在空闲连接时,通过预设数量的线程,对连接池中的所有连接进行空闲连接查询操作。
10.如权利要求9所述的分布式数据库连接装置,其特征在于,还包括:
操作模块,用于若检查到有运行的空闲连接断开,则使用线程将断开的连接关联;还用于若检查到有运行的空闲连接数量超过目标数量,则使用线程将目标数量以外的空闲连接关闭。
CN201610737573.1A 2016-08-26 2016-08-26 分布式数据库连接方法和装置 Active CN106326446B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610737573.1A CN106326446B (zh) 2016-08-26 2016-08-26 分布式数据库连接方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610737573.1A CN106326446B (zh) 2016-08-26 2016-08-26 分布式数据库连接方法和装置

Publications (2)

Publication Number Publication Date
CN106326446A CN106326446A (zh) 2017-01-11
CN106326446B true CN106326446B (zh) 2019-07-19

Family

ID=57790923

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610737573.1A Active CN106326446B (zh) 2016-08-26 2016-08-26 分布式数据库连接方法和装置

Country Status (1)

Country Link
CN (1) CN106326446B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108600349B (zh) * 2018-04-11 2021-01-05 北京小米移动软件有限公司 连接池中的连接管理方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609467A (zh) * 2012-01-16 2012-07-25 北京星网锐捷网络技术有限公司 数据库连接管理方法和装置
CN103729373A (zh) * 2012-10-15 2014-04-16 北京新媒传信科技有限公司 一种数据库代理方法和装置
CN104809247A (zh) * 2015-05-18 2015-07-29 北京京东尚科信息技术有限公司 数据库连接的分配和回收方法
CN105279263A (zh) * 2015-10-23 2016-01-27 国网信息通信产业集团有限公司 一种支持多应用共享的数据库连接系统及方法
CN105512188A (zh) * 2015-11-25 2016-04-20 用友网络科技股份有限公司 数据连接方法和数据连接系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609467A (zh) * 2012-01-16 2012-07-25 北京星网锐捷网络技术有限公司 数据库连接管理方法和装置
CN103729373A (zh) * 2012-10-15 2014-04-16 北京新媒传信科技有限公司 一种数据库代理方法和装置
CN104809247A (zh) * 2015-05-18 2015-07-29 北京京东尚科信息技术有限公司 数据库连接的分配和回收方法
CN105279263A (zh) * 2015-10-23 2016-01-27 国网信息通信产业集团有限公司 一种支持多应用共享的数据库连接系统及方法
CN105512188A (zh) * 2015-11-25 2016-04-20 用友网络科技股份有限公司 数据连接方法和数据连接系统

Also Published As

Publication number Publication date
CN106326446A (zh) 2017-01-11

Similar Documents

Publication Publication Date Title
CN105827446A (zh) 一种智能交通api网关及智能交通业务系统
CN103034735B (zh) 一种大数据分布式文件导出方法
CN103812949B (zh) 一种面向实时云平台的任务调度与资源分配方法及系统
CN105468619B (zh) 用于数据库连接池的资源分配方法和装置
CN104796880B (zh) 客户识别模块sim卡资源分配方法、相关设备及系统
CN103634225A (zh) 云计算网络虚拟化中的业务带宽扩展方法
CN105260485A (zh) 一种数据加载的方法和装置
CN104504103A (zh) 一种车辆轨迹点插入性能优化方法及系统、信息采集器、数据库模型
CN102098233B (zh) 即时通讯软件中通讯窗口的控制方法及控制系统
CN103780686A (zh) 一种云组织内自定义申请审批流程的方法及系统
CN107682460A (zh) 一种分布式存储集群数据通信方法及系统
CN105426307A (zh) 一种局域网产品测试资源共享方法及系统
CN107688512A (zh) 一种优化虚拟机数据备份方法和系统
CN103561060A (zh) 一种多线程环境下的通信链接方法及中转服务器
CN103473848B (zh) 一种基于高并发的网络发票查验构架及方法
CN106326446B (zh) 分布式数据库连接方法和装置
CN105681426A (zh) 异构系统
CN106231235A (zh) 一种受限环境下远程视频会见方法及系统
CN109388589A (zh) 一种调整缓存分区比例的方法、设备及存储介质
CN113641450A (zh) 一种私有云的云管系统及管理方法
CN106354801A (zh) 分布式数据库连接方法和装置
CN104063451B (zh) 一种数据库连接管理方法及系统
CN102902593A (zh) 基于缓存机制的协议分发处理系统
CN109542841A (zh) 集群中创建数据快照的方法及终端设备
CN108156201A (zh) 统一管理应用系统配置数据的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20171219

Address after: 510000 Guangzhou City, Guangzhou, Guangdong, Fangcun Avenue, one of the 314 self compiled

Applicant after: Guangzhou Pinwei Software Co., Ltd.

Address before: Liwan District Fangcun Huahai street Guangzhou city Guangdong province 510000 No. 20 self 1-5 building (only for office use)

Applicant before: Guangzhou VIPSHOP Information and Technology Co., Ltd.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220105

Address after: 510000 Room 601, 128 Dingxin Road, Haizhu District, Guangzhou City, Guangdong Province (office only)

Patentee after: Vipshop (Guangzhou) Software Co.,Ltd.

Address before: 510000 No. 314, Fangcun Avenue, Liwan District, Guangzhou City, Guangdong Province

Patentee before: GUANGZHOU PINWEI SOFTWARE Co.,Ltd.