数据库连接的分配方法和装置的制造方法_2

文档序号:9750806阅读:来源:国知局
根据取模后的数值确定对应的数据库连接集合。
[0037]例如,进程的编号是0,则对应第一连接集合,进程的编号是1,则对应第二连接集入坐I=I 寸 O
[0038]S203:判断该进程的编号对应的数据库连接集合中是否存在空闲的数据库连接,若是,执行S204,否则,执行S205。
[0039]S204:将该进程的编号对应的数据库连接集合中空闲的数据库连接,分配给该进程。之后执行S212。
[0040]例如,进程的编号对应的集合是第一连接集合,第一连接集合在初始创建时包括第一连接和第二连接,假设第一连接未被分配过,则可以将第一连接分配给该进程。
[0041]可选的,当空闲的数据库连接的个数是多个时,可以采用随机方式分配一个数据库连接。
[0042]S205:判断该进程的编号对应的数据库连接集合中是否能够创建新的数据库连接,若是,执行S206,否则,执行S207。
[0043]例如,在初始化时还设置每个数据库连接集合中可以创建的数据库连接的最大个数,当小于该最大个数时,表明能够创建新的数据库连接。
[0044]假设,进程的编号对应的数据库连接集合是第一连接集合,第一连接集合中当前包含的数据库连接的个数是2个,假设最大个数是5个,则确定可以创建新的数据库连接。
[0045]S206:在该进程的编号对应的数据库连接集合中创建新的数据库连接,并将该新的数据库连接分配给该进程。之后执行S212。
[0046]例如,第一连接集合中当前包含第一连接和第二连接,假设第一连接和第二连接都被分配了,如果可以创建新的连接,则可以创建第三连接,之后把第三连接分配给该进程。
[0047]S207:判断其他数据库连接集合中是否存在空闲的数据库连接,若是,执行S208,否则,执行S209。
[0048]其中,可以依次查找其他数据库连接集合中是否存在空闲的数据库连接,例如,进程的编号对应的数据库连接集合是第一连接集合,如果第一连接集合中没有空闲的数据库连接也不能创建新的数据库连接,则可以依次查找第二连接集合等直至找到存在空闲的数据库连接的数据库连接集合或者所有数据库连接集合都被遍历。
[0049]S208:将其他数据库连接集合中空闲的数据库连接,分配给该进程。之后执行S212。
[0050]例如,进程的编号对应的数据库连接集合是第一连接集合,如果第一连接集合中没有空闲的数据库连接也不能创建新的数据库连接,经过查找后,第二连接集合中存在空闲的数据库连接,假设是第四连接,则可以将第四连接分配给该进程。
[0051]S209:判断其他数据库连接集合中是否能够创建新的数据库连接,若是,执行S210,否则,执行SS211。
[0052]例如,在初始化时还设置每个数据库连接集合中可以创建的数据库连接的最大个数,当小于该最大个数时,表明能够创建新的数据库连接。
[0053]假设,进程的编号对应的数据库连接集合是第一连接集合,第一连接集合和其他连接集合中都没有空闲的数据库连接,且第一连接集合中也不能创建新的数据库连接,则可以依次判断其他数据库连接集合中是否可以创建新的数据库连接,例如,当第二连接集合中当前包含的数据库连接的个数是2个,假设最大个数是5个,则确定可以在第二连接集合中创建新的数据库连接。
[0054]S210:在其他数据库连接集合中创建新的数据库连接,并将该新的数据库连接分配给该进程。之后执行S212。
[0055]例如,在第二连接集合中创建第五连接,将第五连接分配给该进程。
[0056]S211:向该进程返回异常结果。
[0057]其中,异常结果可以是没有可用的数据库连接。
[0058]S212:根据分配的数据库连接,执行操作。
[0059]例如,通过数据库连接获取数据。
[0060]S213:在所述操作执行完成后,释放所述数据库连接到原来的数据库连接集合中。
[0061]例如,第一连接集合中的第一连接分配给进程后,进程采用第一连接执行操作后,释放第一连接到第一连接集合中。
[0062]本实施例通过根据所述进程的信息,确定需要的数据库连接所在的数据库连接集合数组中的数据库连接集合的位置信息,由于数据库连接集合数组中包括至少两个数据库连接集合,可以尽量将进程分配到不同的数据库连接集合中,相当于将数据库连接进行分段,例如,第一连接和第二连接属于第一段,第三连接和第四连接属于第二段等,这样可以减少在同一个数据库连接集合中并发的进程的数量,例如,相关技术中所有进程都在一个整体的大的集合中争抢,而本实施例对大的集合进行划分,分为小的集合,在每个小的集合中可以减少进程的数量,也就减少了冲突的概率,从而减少加锁的次数,甚至不需要加锁,例如不同进程被分配到不同小的集合,此时各进程可以在不同的数据库连接集合中获取数据库连接,不需要加锁,从而提高获取数据库连接的性能。
[0063]图3是本申请另一实施例提出的数据库连接的分配装置的结构示意图,该装置300包括获取模块301、确定模块302和第一分配模块303。
[0064]获取模块301用于获取要与数据库建立连接的进程的信息;
[0065]其中,进程的信息可以是指进程的编号,例如,进程要获取数据库连接时,可以向分配装置发送请求消息,该请求消息中包含进程的编号,分配装置从该请求消息中获取进程的编号。
[0066]确定模块302用于根据所述进程的信息,确定需要的数据库连接所在的数据库连接集合数组中的数据库连接集合的位置信息,所述数据库连接集合数组包括至少两个数据库连接集合;
[0067]其中,可以预先建立数据库连接集合数组,数据库连接集合数组中包括至少两个数据库连接集合,再根据进程的编号确定对应的数据库连接集合的位置信息。
[0068]可选的,所述进程的信息是所述进程的编号,所述确定模块32具体用于:
[0069]将所述进程的编号对所述数据库连接集合数组包括的数据库连接集合的总个数进行取模运算,得到取模后的数值;
[0070]将所述取模后的数值对应的位置信息,确定为所述需要的数据库连接所在的数据库连接集合数组中的数据库连接集合的位置信息。
[0071 ] 例如,数据库连接集合包括第一连接集合,第二连接集合,第三连接集合,考虑到取模后的值是从O开始,那么进程编号也可以从O开始,且数据库连接集合的序号也从O开始,从而找到对应的集合,例如,第一进程的编号是0,由于取模后的数值是0,则该第一进程的编号对应的位置信息是0,对应的数据库连接集合是第一连接集合,类似的,当进程的编号是I时,则对应的集合是第二连接集合。可以理解的是,假设进程的编号是从I开始,则可以将编号减I后再取模,确定对应的集合。
[0072]第一分配模块303用于如果所述位置信息对应的数据库连接集合中存在空闲的数据库连接,则将所述空闲的数据库连接分配给所述进程。
[0073]例如,第一进程的编号对应的数据库连接集合是第一连接集合,则如果第一连接集合中存在空闲的数据库连接,则将空闲的数据库连接分配给第一进程。
[0074]本实施例通过根据所述进程的信息,确定需要的数据库连接所在的数据库连接集合数组中的数据库连接集合的位置信息,由于数据库连接集合数组中包括至少两个数据库连接集合,可以尽量将进程分配到不同的数据库连接集合中,从
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1