CN116662426A - 数据库连接的建立方法、装置、设备及介质 - Google Patents
数据库连接的建立方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116662426A CN116662426A CN202310512901.8A CN202310512901A CN116662426A CN 116662426 A CN116662426 A CN 116662426A CN 202310512901 A CN202310512901 A CN 202310512901A CN 116662426 A CN116662426 A CN 116662426A
- Authority
- CN
- China
- Prior art keywords
- database connection
- target
- database
- connection
- connection information
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000013507 mapping Methods 0.000 claims description 47
- 230000007717 exclusion Effects 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 24
- 230000008569 process Effects 0.000 abstract description 39
- 238000010586 diagram Methods 0.000 description 8
- 238000001514 detection method Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书提供一种数据库连接的建立方法、装置、设备及介质。通过在接收到数据库连接建立指令时,基于数据库连接建立指令所指示的目标连接信息进行加锁操作,以便可以在目标连接信息处于加锁状态的情况下,基于目标连接信息进行数据库连接的建立。通过该方案,可以为建立数据库连接的过程进行加锁,以应对数据库连接建立过程中的并发问题;并且,该方案可以将数据库连接建立过程中所使用的锁粒度细化到数据库连接信息这一粒度,以便同一数据库连接信息在某一时刻仅会有一个数据库连接被建立,但该数据库连接的建立过程不会影响其他数据库连接信息所对应的数据库连接的建立,提高数据库连接的建立效率,以应对大规模数据库实例的管理需求。
Description
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种数据库连接的建立方法、装置、设备及介质。
背景技术
数据库实例作为位于用户和操作系统之间的数据管理软件,可以为用户提供数据库的访问通道,以便用户可以在数据库中进行诸如数据定义、数据查询、数据维护、数据库运行控制之类的操作。数据库管控系统作为一种对数据库进行统一的管理和控制的大型软件,可以用于对数据库实例进行管理。
通常情况下,数据库管控系统需要面向规模化管理场景,用于对多个数据库实例进行管理,尤其是在云上或多租户场景下,需要管理的数据库实例数量更多,需要建立数据库连接的场景非常频繁。因此,在数据库连接建立过程中很可能会出现并发问题,导致数据库连接建立失败,或者建立了多余的数据库连接,导致计算资源浪费。因此,提出一种数据库连接的建立方法,来应对数据库连接建立过程中的并发问题。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种数据库连接的建立方法、装置、设备及介质。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种数据库连接建立方法,包括:
响应于接收到数据库连接建立指令,基于数据库连接建立指令所指示的目标连接信息进行加锁操作;
在目标连接信息处于加锁状态的情况下,基于目标连接信息进行数据库连接的建立。
根据本说明书一个或多个实施例的第二方面,提出了一种数据库连接的建立装置,包括:
加锁模块,用于响应于接收到数据库连接建立指令,基于数据库连接建立指令所指示的目标连接信息进行加锁操作;
建立模块,用于在目标连接信息处于加锁状态的情况下,基于目标连接信息进行数据库连接的建立。
根据本说明书一个或多个实施例的第三方面,提出了一种计算设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器通过运行可执行指令以实现如上述第一方面中任一项所描述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,计算机指令被处理器执行时实现如上述第一方面中任一项所描述方法的步骤。
通过在接收到数据库连接建立指令时,基于数据库连接建立指令所指示的目标连接信息进行加锁操作,以便可以在目标连接信息处于加锁状态的情况下,基于目标连接信息进行数据库连接的建立。通过该方案,可以为建立数据库连接的过程进行加锁,以应对数据库连接建立过程中的并发问题;并且,该方案可以将数据库连接建立过程中所使用的锁粒度细化到数据库连接信息这一粒度,以便同一数据库连接信息在某一时刻仅会有一个数据库连接被建立,但该数据库连接的建立过程不会影响其他数据库连接信息所对应的数据库连接的建立,提高数据库连接的建立效率,以应对大规模数据库实例的管理需求。
附图说明
图1是一示例性实施例提供的一种数据库连接的建立方法的流程图。
图2是一示例性实施例提供的一种数据库连接标识的组成示意图。
图3是一示例性实施例提供的一种互斥锁映射表的示意图。
图4是一示例性实施例提供的一种数据库连接的建立过程的流程图。
图5是一示例性实施例提供的一种数据库连接的获取过程的流程图。
图6是一示例性实施例提供的一种数据库连接的建立过程的流程图。
图7是一示例性实施例提供的一种计算设备的示意结构图。
图8是一示例性实施例提供的一种数据库连接的建立装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
本说明书所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
本说明书提供了一种数据库连接的建立方法,用于在数据库连接的建立过程中,从数据库连接信息(也即是数据库连接所需要素)粒度来对建立数据库连接的环节进行加锁,以应对数据库连接建立过程中的并发问题。另外,通过本说明书所提供的数据库连接的建立方法,可以将数据库连接建立过程中所使用的锁粒度细化到数据库连接信息这一粒度,以便同一数据库连接信息在某一时刻仅会有一个数据库连接被建立,但该数据库连接的建立过程不会影响其他数据库连接信息所对应的数据库连接的建立,提高数据库连接的建立效率,以应对大规模数据库实例的管理需求。
其中,所要连接的数据库可以为任意类型的数据库,例如,所要连接的数据库可以为关系型数据库,或者,所要连接的数据库可以为分布式数据库,等等,本说明书对所要连接的数据库的具体类型不加以限定。
可选地,上述数据库连接的建立方法可以由计算设备执行,计算设备可以为服务器,如一台服务器、多台服务器、服务器集群、云计算平台,等等,本说明书对计算设备的设备类型不加以限定。
上述仅为有关本说明书的应用场景的示例性说明,并不构成对本说明书的应用场景的限定,在更多可能的实现方式中,本说明书所提供的方案可以应用于其他更多的场景中,本说明书对具体的应用场景不加以限定。
在介绍了本说明书的应用场景之后,接下来对本说明书的具体实现过程进行介绍。
参见图1,图1是一示例性实施例提供的一种数据库连接的建立方法的流程图,如图1所示,该方法包括:
步骤101、响应于接收到数据库连接建立指令,基于数据库连接建立指令所指示的目标连接信息进行加锁操作,目标连接信息用于指示确定数据库连接建立指令所指示的数据库连接时所需的数据库连接要素。
其中,目标连接信息也即是数据库连接指令要建立的数据库连接所对应的数据库连接要素,数据库连接要素也即是确定一个数据库连接时所需的要素,一般而言,数据库连接要素可以为数据库连接五要素,包括目标地址、目标端口号、数据库标识、用户标识和密码,因而,目标连接信息可以包括目标地址、目标端口号、数据库标识、用户标识和密码。
需要说明的是,目标地址可以为目标网际协议(Internet Protocol,IP)地址,目标IP地址可以用于指示要连接的数据库在网络中的逻辑地址;数据库标识可以为数据库名称,可选地,数据库标识可以由数字、字母、特殊字符中的至少一项组成;用户标识可以为预先注册好的、允许对目标地址所指示的数据库访问的用户账号;密码可以是预先分配给该目标地址所指示的数据库的,可选的,密码可以由数字、字母、特殊字符中的至少一项组成。
步骤102、在目标连接信息处于加锁状态的情况下,基于目标连接信息进行数据库连接的建立。
通过对目标连接信息进行加锁,可以保证在同一时刻内目标地址所对应的数据库中仅有一个数据库连接正在被建立,以应对数据库建立过程中的并发问题,但是其他地址所对应的数据库中的数据库仍可以正常建立,从而可以提高数据库连接的建立效率。
上述实施例通过在接收到数据库连接建立指令时,基于数据库连接建立指令所指示的目标连接信息进行加锁操作,以便可以在目标连接信息处于加锁状态的情况下,基于目标连接信息进行数据库连接的建立。通过该方案,可以为建立数据库连接的过程进行加锁,以应对数据库连接建立过程中的并发问题;并且,该方案可以将数据库连接建立过程中所使用的锁粒度细化到数据库连接信息这一粒度,以便同一数据库连接信息在某一时刻仅会有一个数据库连接被建立,但该数据库连接的建立过程不会影响其他数据库连接信息所对应的数据库连接的建立,提高数据库连接的建立效率,以应对大规模数据库实例的管理需求。
上述仅为对有关本说明书的基本实现流程的介绍,下面结合本说明书的可选实施例,对本说明书所提供的数据库连接的建立方法进行详细说明。
需要说明的是,上述实施例主要介绍了获取到数据库连接建立指令后,即可响应于数据库连接建立指令来进行数据库连接的建立,可选地,在步骤101之前,该数据库连接的建立方法还可以包括如下步骤:
步骤100-1、响应于接收到数据库连接获取请求,检测数据库连接缓存中是否存在数据库连接获取请求所指示的目标连接信息对应的数据库连接。
其中,数据库连接缓存可以为专门用于对已经建立的数据库连接进行存储的缓存区域,每建立一个数据库连接,即可将所建立的连接存储至数据库连接缓存中,以通过数据连接缓存所提供的缓存机制来管理和复用数据库连接。
通过维护一个数据库连接缓存,以便在接收到数据库连接获取请求时,可以先在数据库缓存中检测是否存在所需的数据库连接,从而可以在数据库连接缓存中存在所需数据库连接时,直接从数据库连接缓存中获取所需数据库连接来进行使用,避免建立多余连接导致资源浪费。
其中,数据库连接缓存可以用于对数据库连接和数据库连接信息进行对应存储,因此,在检测数据库连接缓存中是否存在所需数据库连接时,可以基于数据库连接获取请求所指示的目标连接信息来进行检测,检测数据库缓存中是否存在对应数据库连接信息与目标连接信息一致的数据库连接,以实现对数据库连接缓存中是否存在所需数据库连接的检测。
可选地,在具体实现过程中,可以创建一个对象,以通过该对象来对数据库连接信息进行存储,不同对象对应的标识不同,该对象及其标识即可被称为数据库连接标识(Identity,ID),参见图2,图2是一示例性实施例提供的一种数据库连接标识的组成示意图,如图2所示,数据库连接标识用于存储数据库连接信息,也即是,数据库连接标识用于存储目标地址、目标端口号、数据库标识、用户标识和密码。
需要说明的是,一个数据库连接信息可以确定出一个唯一的数据库连接标识,因而,在一种可能的实现方式中,数据库连接缓存可以用于对数据库连接和数据库连接标识进行对应存储。则在一些实施例中,该步骤100-1可以通过如下步骤实现:
步骤一、响应于接收到数据库连接获取请求,确定数据库连接获取请求所指示的目标连接信息对应的目标数据库连接标识。
可选地,在接收到数据库连接获取请求的情况下,可以检测是否已经为目标连接信息确定过数据库连接标识,如果是,则直接将已确定出的数据库连接标识作为目标数据库连接标识即可;如果不是,则需要为目标连接信息分配一个数据库连接标识作为目标数据库连接标识,所分配的数据库连接标识需要保证与已分配的数据库连接标识均不一致,以保证该目标数据库连接标识可以唯一性标识该目标连接信息。
步骤二、检测数据库连接缓存中是否存在目标数据库连接标识所对应的数据库连接。
在确定出目标数据库连接标识后,即可基于目标数据库连接标识来在数据库连接缓存中进行查找,以确定数据库连接缓存中是否存在所需数据库连接(也即是目标数据库连接标识所对应的数据库连接)。
步骤100-2、若数据库连接缓存中存在目标连接信息所对应的数据库连接,则从数据库连接缓存中获取目标连接信息所对应的数据库连接,否则,生成数据库连接建立指令。
需要说明的是,在数据库连接的使用过程中,是允许对数据库连接进行复用的,因而,在数据库连接缓存中存在所需数据库连接的情况下,直接从数据库连接缓存中获取所需数据库连接,从而返回所获取到的数据库连接缓存,以便请求方可以通过所返回的数据库连接缓存来对目标地址所对应的数据库进行访问。而在数据库连接缓存中不存在所需数据库连接的情况下,则需要自行建立所需数据库连接。
对于步骤101,在响应于接收到数据库连接建立指令,基于数据库连接建立指令所指示的目标连接信息进行加锁操作时,可以通过如下步骤实现:
步骤1011、响应于接收到数据库连接建立指令,从预先设置好的互斥锁映射表中获取目标连接信息所对应的锁对象。
其中,互斥锁映射表用于存储数据库连接和锁对象的对应关系。可选地,数据库连接可以是已经建立且还未被销毁的;或者,数据库连接可以是已经建立过但已经被销毁的,在销毁数据库连接时无需销毁其对应的锁对象,以便下次要再次创建该数据库连接时,可以直接从互斥锁映射表中获取到该数据库连接所对应的锁对象;或者,数据库连接可以是待建立的,在某个数据库连接正在被创建但尚未创建成功时,也可以将该数据库连接和其所对应的锁对象对应存储至互斥锁映射表中。
例如,可以通过互斥锁映射表存储数据库连接的数据库连接信息和锁对象的对象关系,以便在接收到数据库连接建立指令时,可以根据数据库连接建立指令所指示的目标连接信息,来在互斥锁映射表中进行查找,以从互斥锁映射表中获取目标连接信息所对应的锁对象。
需要说明的是,一个数据库连接信息即会对应于一个锁对象,后续通过对锁对象进行加锁,即可实现对对应数据库连接信息的加锁。
可选地,由于数据库连接标识和数据库连接信息之间也是一一对应的,因此,互斥锁映射表可以对数据库连接标识和锁对象之间的对应关系进行存储,参见图3,图3是一示例性实施例提供的一种互斥锁映射表的示意图,如图3所示,互斥锁映射表中可以对应存储有数据库连接标识1和锁对象1、数据库连接标识2和锁对象2、数据库连接标识3和锁对象3,等等,以便后续可以根据互斥锁映射表中所存储的数据库连接标识和锁对象的对应关系,来进行目标连接信息所对应的锁对象的获取。
因而,在响应于接收到数据库连接建立指令,从预先设置好的互斥锁映射表中获取目标连接信息所对应的锁对象时,可以通过如下方式实现:
响应于接收到数据库连接建立指令,确定数据库连接建立指令所指示的目标连接信息对应的目标数据库连接标识;从互斥锁映射表中获取目标数据库连接标识对应的锁对象,作为目标连接信息所对应的锁对象。
其中,确定目标连接信息对应的目标数据库连接标识的过程可以参见上述实施例,此处不再赘述。在通过上述过程确定出目标数据库连接标识之后,即可基于互斥锁映射表中所存储的数据库连接标识和锁对象的对应关系,来获取目标数据库连接标识对应的锁对象,以得到目标连接信息对应的锁对象。
上述实施例是以从互斥锁映射表中获取目标连接信息所对应的锁对象为例来进行说明的,在更多可能的实现方式中,还有可能出现互斥锁映射表中未存储有目标连接信息所对应的锁对象的情况。
在一些实施例中,若互斥锁映射表中未存储有目标连接信息所对应的锁对象,则创建一个锁对象,以便后续可以基于所创建的锁对象来对目标连接信息进行加锁。
可选地,在创建了目标连接信息所对应的锁对象之后,可以将所创建的锁对象与目标连接信息对应存储到互斥锁映射表中,例如,可以将所创建的锁对象和目标数据库连接标识对应存储至互斥锁映射表中。
也即是,如果要根据数据库连接指令创建某个数据库连接,但是在互斥锁映射表中没有找到该数据库连接所对应的锁对象,则可以为该数据库连接建立一个锁对象,并将所建立的锁对象与该数据库连接的对应关系存储至互斥锁映射表中。
步骤1012、对目标连接信息所对应的锁对象进行加锁操作,以实现对目标连接信息的加锁操作。
通过对目标连接信息所对应的锁对象进行加锁,即可实现对目标连接信息的加锁,从而即可通过步骤102,在目标连接信息处于加锁状态的情况下,基于目标连接信息进行数据库连接的建立,以避免数据库连接建立过程中的并发问题。
可选地,上述对数据库连接缓存进行检测、对互斥锁映射表进行检测以及建立数据库连接等一系列过程可以通过已启动的工作线程实现。例如,可以在接收到数据库连接获取请求时,即启动一个工作线程,以便可以通过所启动的工作线程来进行后续一系列操作。
在一些实施例中,在基于目标连接信息实现数据库连接的建立之后,可以将所建立的数据库连接存储至数据库连接缓存中,以便后续可以直接从数据库连接缓存中获取数据库连接。
可选地,在通过数据库连接缓存对所建立的数据库连接进行存储时,可以将所建立的数据库连接与目标连接信息对应存储,或者,可以将所建立的数据库连接与目标数据库连接标识对应存储,以便后续可以根据目标连接信息或目标数据库连接标识来获取该数据库连接。
上述实施例是以直接响应于数据库连接建立指令,来基于互斥锁映射表来获取锁对象,从而通过对锁对象进行加锁,进而在加锁状态下来进行数据库连接的建立为例来进行说明的,然而,在该数据库连接的建立过程中,还可能出现其他线程要获取该目标连接信息所对应的数据库连接的情况,对于这些线程,会检测到数据库连接缓存中不存在目标连接信息所对应的数据库连接、且目标连接信息处于加锁状态,此时,需要等待目标连接信息所对应的锁被释放,以便在目标连接信息所对应的锁被释放的情况下,再次检测数据库连接缓存中是否存在目标连接信息所对应的数据库连接,从而根据检测结果来进行数据库连接的获取。
上述实施例是以在接收到数据库连接获取请求时,先检测数据库缓存中是否存在所需数据库连接,从而在数据库缓存中不存在所需数据库连接时,再基于互斥锁映射表获取所需数据库连接对应的锁对象,从而通过再锁对象处于加锁状态的情况下,来进行所需数据库连接的建立为例来进行说明的,通过上述方案,在数据库缓存中存在所需数据库连接时,可以直接获取到所需数据库连接,从而可以提高数据库连接的获取效率,但是,对于未存在在数据库连接缓存中的所需数据库连接,如果所需数据库连接对应的数据库连接信息处于加锁状态下,等到锁释放后仍需要再次在数据库缓存中进行检测,从而使得上述方案所提供的数据库连接的建立方法可能需要进行两次数据库缓存的检测。
在更多的可能的实现方式中,响应于接收到数据库连接获取请求,还可以不对数据库连接缓存进行检测,而是直接从预先设置好的互斥锁映射表中获取目标连接信息所对应的锁对象,从而对目标连接信息所对应的锁对象进行加锁操作,以实现对目标连接信息的加锁操作,进而在目标连接信息处于加锁状态的情况下,再检测数据库连接缓存中是否存在获取目标连接信息所对应的数据库连接。若数据库连接缓存中存在目标连接信息所对应的数据库连接,则从数据库连接缓存中获取目标连接信息所对应的数据库连接,否则,生成数据库连接建立指令,从而基于数据库连接指令来进行目标连接信息所对应的数据库连接的建立。
参见图4,图4是一示例性实施例提供的一种数据库连接的建立过程的流程图,如图4所示,响应于接收到数据库连接获取请求,检测互斥锁映射表中是否有所需数据库连接的数据库连接ID对应的锁对象,若有,则可以直接从互斥锁映射表中获取该数据库连接ID对应的锁对象;若没有,则需要创建该数据库连接ID对应的锁对象,并将该数据库连接ID与所创建的锁对象对应存储至互斥锁映射表中,以实现对该数据库连接ID与所创建的锁对象之间的映射关系的建立,并且可以实现该数据库连接ID对应的锁对象的获取。在获取到该数据库连接ID对应的锁对象之后,即可对该锁对象进行加锁,以在加锁成功时(也即是该锁对象处于加锁状态的情况下)进行数据库连接的获取;若加锁未成功,则需要阻塞数据库连接的获取,直至加锁成功再获取数据库连接。在获取到数据库连接之后,即可释放为该锁对象所添加的锁。
其中,获取数据库连接的过程可以参见图5,图5是一示例性实施例提供的一种数据库连接的获取过程的流程图,如图5所示,在加锁成功时即可进行数据库连接的获取,在获取数据库连接时,可以先检测数据库连接缓存中是否存在所需数据库连接,若是,则可以直接从数据库连接缓存中获取所需数据库连接,否则,则需要创建新的数据库连接,并将所创建的数据库连接存储至数据库连接缓存中。无论是直接从缓存中获取到了所需数据库连接,还是自行创建了所需数据库链接,均可实现所需数据库连接的获取,从而即可向请求方返回可用连接,以便请求方可以通过所接收到的数据库连接,来对数据库进行访问。
上述实施例主要是有关流程方面的介绍,各个步骤的具体实现过程可以参见上述实施例,此处不再赘述。
另外,对于接收到数据库连接获取请求时,不对数据库连接缓存进行检测,而是直接从预先设置好的互斥锁映射表中获取目标连接信息所对应的锁对象并进行后续过程的实现方式,若有两个工作线程所要获取的数据库连接是相同的,则可以通过如图6所示的方式,来使这两个工作线程均可获取到所需数据库连接。
参见图6,图6是一示例性实施例提供的一种数据库连接的建立过程的流程图,如图6所示,若工作线程1(也即是Thread1)在t0时刻请求获取数据库连接,则可以从互斥锁映射表中查找所需数据库连接对应的锁对象,从而对所查找到的锁对象进行加锁,进而在加锁成功的状态下来进行数据库连接的获取,并在获取到数据库连接后释放所添加的锁;在Thread1请求获取数据库连接的过程中,若工作线程2(也即是Thread2)在t1(t1>t0)时刻请求获取数据库连接,则可以从互斥锁映射表中查找所需数据库连接对应的锁对象,从而对所查找到的锁对象进行加锁,由于此时Thread1已经对该锁对象加了锁,则Thread2对该锁对象加锁时会加锁失败,此时,会阻塞Thread2的后续操作,直至加锁成功,使得Thread2在加锁成功的状态下来进行数据库连接的获取,并在获取到数据库连接后释放所添加的锁。
通过本说明书所提供的方案,使得获取数据库连接的这部分流程可以处在锁保护之下,每次只会有一个线程进入获取数据库连接的流程,从而可以避免并发问题。
与前述方法的实施例相对应,本说明书还提供了对应的设备实施例。
图7是一示例性实施例提供的一种计算设备的示意结构图。请参考图7,在硬件层面,该计算设备包括处理器702、内部总线704、网络接口706、内存708以及非易失性存储器710,当然还可能包括其他任务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器702从非易失性存储器710中读取对应的计算机程序到内存708中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本说明书还提供了一种数据库连接的建立装置,请参考图8,图8是一示例性实施例提供的一种数据库连接的建立装置的框图,该数据库连接的建立装置可以应用于如图7所示的计算设备中,以实现本说明书的技术方案。其中,该数据库连接的建立装置可以包括:
加锁模块801,用于响应于接收到数据库连接建立指令,基于数据库连接建立指令所指示的目标连接信息进行加锁操作,目标连接信息用于指示确定数据库连接建立指令所指示的数据库连接时所需的数据库连接要素;
建立模块802,用于在目标连接信息处于加锁状态的情况下,基于目标连接信息进行数据库连接的建立。
在一些实施例中,加锁模块,在用于响应于接收到数据库连接建立指令,基于数据库连接建立指令所指示的目标连接信息进行加锁操作时,用于:
响应于接收到数据库连接建立指令,从预先设置好的互斥锁映射表中获取目标连接信息所对应的锁对象;
对目标连接信息所对应的锁对象进行加锁操作,以实现对目标连接信息的加锁操作。
在一些实施例中,互斥锁映射表用于存储数据库连接标识和锁对象之间的对应关系;
加锁模块,在用于响应于接收到数据库连接建立指令,从预先设置好的互斥锁映射表中获取目标连接信息所对应的锁对象时,用于:
响应于接收到数据库连接建立指令,确定数据库连接建立指令所指示的目标连接信息对应的目标数据库连接标识;
从互斥锁映射表中获取目标数据库连接标识对应的锁对象,作为目标连接信息所对应的锁对象。
在一些实施例中,建立模块802,还用于若互斥锁映射表中未存储有目标连接信息所对应的锁对象,则创建一个锁对象;
该装置还包括:
第一存储模块,用于将所创建的锁对象和目标数据库连接标识对应存储至互斥锁映射表中。
在一些实施例中,该装置还包括:
第二存储模块,用于将所建立的数据库连接存储至数据库连接缓存中,其中,所建立数据库连接对应于目标数据连接标识,目标数据库连接标识基于目标连接信息确定。
在一些实施例中,该装置还包括:
第一检测模块,用于响应于接收到数据库连接获取请求,检测数据库连接缓存中是否存在数据库连接获取请求所指示的目标连接信息对应的数据库连接;
第一获取模块,用于若数据库连接缓存中存在目标连接信息所对应的数据库连接、且目标连接信息处于未加锁状态,则从数据库连接缓存中获取目标连接信息所对应的数据库连接;
第一生成模块,用于若数据库缓存中不存在目标连接信息所对应的数据库连接、且目标连接信息处于未加锁状态,则生成数据库连接建立指令。
在一些实施例中,该装置还包括:
等待模块,用于若数据库连接缓存中不存在目标连接信息所对应的数据库连接、且目标连接信息处于加锁状态,则等待目标连接信息所对应的锁被释放;
第一检测模块,还用于若目标连接信息所对应的锁被释放,则再次检测数据库连接缓存中是否存在目标连接信息所对应的数据库连接。
在一些实施例中,数据库连接缓存用于对数据库连接和数据库连接标识进行对应存储;
第一检测模块,在用于响应于接收到数据库连接获取请求,检测数据库连接缓存中是否存在数据库连接获取请求所指示的目标连接信息对应的数据库连接时,用于:
响应于接收到数据库连接获取请求,确定数据库连接获取请求所指示的目标连接信息对应的目标数据库连接标识;
检测数据库连接缓存中是否存在目标数据库连接标识所对应的数据库连接。
在一些实施例中,该装置还包括:
第二获取模块,用于响应于接收到数据库连接获取请求,从预先设置好的互斥锁映射表中获取目标连接信息所对应的锁对象;
加锁模块,还用于对目标连接信息所对应的锁对象进行加锁操作,以实现对目标连接信息的加锁操作;
第二检测模块,用于在目标连接信息处于加锁状态的情况下,检测数据库连接缓存中是否存在目标连接信息所对应的数据库连接;
第二获取模块,还用于若数据库连接缓存中存在目标连接信息所对应的数据库连接,则从数据库连接缓存中获取目标连接信息所对应的数据库连接;
第二生成模块,用于若数据库连接缓存中不存在目标连接信息所对应的数据库连接,则生成数据库连接建立指令。
在一些实施例中,目标连接信息包括目标地址、目标端口号、数据库标识、用户标识和密码。
上述实施例阐明的装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(Central ProcessingUnit,CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RandomAccess Memory,RAM)和/或非易失性内存等形式,如只读存储器(Read-Only Memory,ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(Phase Change Random AccessMemory,PRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、动态随机存取存储器(Dynamic Random Access Memory,DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CompactDisc Read-Only Memory,CD-ROM)、数字多功能光盘(Digital Video Disc,DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(Transitory Media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (13)
1.一种数据库连接的建立方法,包括:
响应于接收到数据库连接建立指令,基于所述数据库连接建立指令所指示的目标连接信息进行加锁操作,所述目标连接信息用于指示确定所述数据库连接建立指令所指示的数据库连接时所需的数据库连接要素;
在所述目标连接信息处于加锁状态的情况下,基于所述目标连接信息进行数据库连接的建立。
2.根据权利要求1所述的方法,响应于接收到数据库连接建立指令,基于所述数据库连接建立指令所指示的目标连接信息进行加锁操作,包括:
响应于接收到数据库连接建立指令,从预先设置好的互斥锁映射表中获取所述目标连接信息所对应的锁对象;
对所述目标连接信息所对应的锁对象进行加锁操作,以实现对所述目标连接信息的加锁操作。
3.根据权利要求2所述的方法,所述互斥锁映射表用于存储数据库连接标识和锁对象之间的对应关系;
响应于接收到数据库连接建立指令,从预先设置好的互斥锁映射表中获取所述目标连接信息所对应的锁对象,包括:
响应于接收到数据库连接建立指令,确定所述数据库连接建立指令所指示的目标连接信息对应的目标数据库连接标识;
从所述互斥锁映射表中获取所述目标数据库连接标识对应的锁对象,作为所述目标连接信息所对应的锁对象。
4.根据权利要求3所述的方法,响应于接收到数据库连接建立指令,确定所述数据库连接建立指令所指示的目标连接信息对应的目标数据库连接标识之后,所述方法还包括:
若所述互斥锁映射表中未存储有所述目标连接信息所对应的锁对象,则创建一个锁对象;
将所创建的锁对象和所述目标数据库连接标识对应存储至所述互斥锁映射表中。
5.根据权利要求1所述的方法,在所述目标连接信息处于加锁状态的情况下,基于所述目标连接信息进行数据库连接的建立之后,所述方法还包括:
将所建立的数据库连接存储至数据库连接缓存中,其中,所建立数据库连接对应于目标数据连接标识,所述目标数据库连接标识基于所述目标连接信息确定。
6.根据权利要求1所述的方法,响应于接收到数据库连接建立指令,基于所述数据库连接建立指令所指示的目标连接信息进行加锁操作之前,所述方法还包括:
响应于接收到数据库连接获取请求,检测数据库连接缓存中是否存在所述数据库连接获取请求所指示的目标连接信息对应的数据库连接;
若所述数据库连接缓存中存在所述目标连接信息所对应的数据库连接、且所述目标连接信息处于未加锁状态,则从所述数据库连接缓存中获取所述目标连接信息所对应的数据库连接,否则,生成所述数据库连接建立指令。
7.根据权利要求6所述的方法,检测数据库连接缓存中是否存在所述目标连接信息所对应的数据库连接之后,所述方法还包括:
若所述数据库连接缓存中不存在所述目标连接信息所对应的数据库连接、且所述目标连接信息处于加锁状态,则等待所述目标连接信息所对应的锁被释放;
若所述目标连接信息所对应的锁被释放,则再次检测数据库连接缓存中是否存在所述目标连接信息所对应的数据库连接。
8.根据权利要求6所述的方法,所述数据库连接缓存用于对数据库连接和数据库连接标识进行对应存储;
响应于接收到数据库连接获取请求,检测数据库连接缓存中是否存在所述数据库连接获取请求所指示的目标连接信息对应的数据库连接,包括:
响应于接收到数据库连接获取请求,确定所述数据库连接获取请求所指示的目标连接信息对应的目标数据库连接标识;
检测所述数据库连接缓存中是否存在所述目标数据库连接标识所对应的数据库连接。
9.根据权利要求1所述的方法,响应于接收到数据库连接建立指令,基于所述数据库连接建立指令所指示的目标连接信息进行加锁操作之前,所述方法还包括:
响应于接收到数据库连接获取请求,从预先设置好的互斥锁映射表中获取所述目标连接信息所对应的锁对象;
对所述目标连接信息所对应的锁对象进行加锁操作,以实现对所述目标连接信息的加锁操作;
在所述目标连接信息处于加锁状态的情况下,检测数据库连接缓存中是否存在所述目标连接信息所对应的数据库连接;
若所述数据库连接缓存中存在所述目标连接信息所对应的数据库连接,则从所述数据库连接缓存中获取所述目标连接信息所对应的数据库连接,否则,生成所述数据库连接建立指令。
10.根据权利要求1至9中任一项所述的方法,所述目标连接信息包括目标地址、目标端口号、数据库标识、用户标识和密码。
11.一种数据库连接的建立装置,包括:
加锁模块,用于响应于接收到数据库连接建立指令,基于所述数据库连接建立指令所指示的目标连接信息进行加锁操作,所述目标连接信息用于指示确定所述数据库连接建立指令所指示的数据库连接时所需的数据库连接要素;
建立模块,用于在所述目标连接信息处于加锁状态的情况下,基于所述目标连接信息进行数据库连接的建立。
12.一种计算设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-10中任一项所述的方法。
13.一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现如权利要求1-10中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310512901.8A CN116662426A (zh) | 2023-05-08 | 2023-05-08 | 数据库连接的建立方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310512901.8A CN116662426A (zh) | 2023-05-08 | 2023-05-08 | 数据库连接的建立方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116662426A true CN116662426A (zh) | 2023-08-29 |
Family
ID=87721520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310512901.8A Pending CN116662426A (zh) | 2023-05-08 | 2023-05-08 | 数据库连接的建立方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116662426A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117539949A (zh) * | 2024-01-10 | 2024-02-09 | 腾讯科技(深圳)有限公司 | 数据库访问请求的处理方法、装置、电子设备和存储介质 |
-
2023
- 2023-05-08 CN CN202310512901.8A patent/CN116662426A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117539949A (zh) * | 2024-01-10 | 2024-02-09 | 腾讯科技(深圳)有限公司 | 数据库访问请求的处理方法、装置、电子设备和存储介质 |
CN117539949B (zh) * | 2024-01-10 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 数据库访问请求的处理方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6205466B1 (en) | Infrastructure for an open digital services marketplace | |
US20200183892A1 (en) | Data Transaction Processing Method, Apparatus, and Electronic Device | |
US7668831B2 (en) | Assigning unique identification numbers to new user accounts and groups in a computing environment with multiple registries | |
CN111831757B (zh) | 分布式全局唯一标识信息的生成和管理方法及装置 | |
US20180052720A1 (en) | Tracing System Operations Across Remote Procedure Linkages to Identify Request Originators | |
CN106156126B (zh) | 处理数据任务中的数据冲突检测方法及服务器 | |
CN106802939B (zh) | 一种解决数据冲突的方法和系统 | |
US10282120B2 (en) | Method, apparatus and system for inserting disk | |
JP6859518B2 (ja) | サーバへの攻撃を防ぐ方法及びデバイス | |
US20080104250A1 (en) | Identity migration system apparatus and method | |
CN113220717B (zh) | 基于区块链的数据核验方法及装置、电子设备 | |
CN116662426A (zh) | 数据库连接的建立方法、装置、设备及介质 | |
US7574439B2 (en) | Managing a nested request | |
WO2020000716A1 (zh) | 大数据分析系统、服务器、数据处理方法、程序和存储介质 | |
CN113779545A (zh) | 数据跨进程共享的方法、终端设备及计算机可读存储介质 | |
CN115002228A (zh) | 服务级联调用方法、装置、电子设备及存储介质 | |
CN112988777A (zh) | 对象处理方法、装置、计算机设备和存储介质 | |
WO2024021409A1 (zh) | 数据检索方法及装置 | |
CN110659303A (zh) | 一种数据库节点的读写控制方法及装置 | |
US11308048B2 (en) | Database migration method, apparatus, device, and computer-readable medium | |
CN109710609A (zh) | 生成数据表标识的方法及装置 | |
US7337252B2 (en) | System and method for resolving conflicts of re-locking resources | |
CN114647663A (zh) | 一种资源处理方法、装置、系统、电子设备及存储介质 | |
CN115878336A (zh) | 锁操作中的信息处理方法、装置及计算设备 | |
US20100125619A1 (en) | Deterministic selection of domain controllers in a multi-master database distributed directory service |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40094562 Country of ref document: HK |