一次数据库服务器可以有多少个打开的连接?

时间:2011-01-24 16:34:17

标签: sql oracle connection-pooling

您好我正在尝试使用Oracle 11g进行数据库驻留连接池。现在我想到的一个问题是,如果后端有1个数据库服务器。我的数据库服务器在给定时刻可以处理多少个并发请求,它是一个还是同时多于一个。

要解释我的问题,如果Client1请求前100个结果的选择查询,而Client2请求选择其他内容,服务器是否同时处理这两个结果,或者完成它收到的第一个请求,然后出席下一个请求??

4 个答案:

答案 0 :(得分:7)

根据此处的文档:http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/listenercfg.htm

这是特定于平台的。 (这也会因数据库系统而异,但是你提到了Oracle 11g,所以这就是我特别回答的问题。)

  

注意:

     

默认的并发数   连接请求正在运行   系统专用。默认值为   Linux操作系统上的TCP / IP   和Microsoft Windows遵循:

     

◦Linux   操作系统:128

     

◦MicrosoftWindowsXP Professional   SP2:10

     

◦MicrosoftWindows2003 Server   企业版:200

对于其他数据库,您始终可以谷歌“最大并发连接数(此处插入数据库类型)”

实际上,从技术上讲,单个处理器一次只能处理一次计算,所以实际上,当你问“在同一时刻”技术上时,答案是否定的。

Threading可能会让它看起来像是在同一时刻发生,但可能不是。线程与强大的计算机相结合,非常有条理地使事情看起来,就像它们通过处理个人任务同时发生一样,但实际上,它并非如此。但这是一个比这里更重要的话题。

答案 1 :(得分:2)

DBMS可以同时处理多个连接,通常为数百个。但是,通常每个核心的一些查询(可能是2-3个)将同时进行。

@David确实,单个处理器一次只能处理一个计算,但是当负载受磁盘限制时,它会有很多空闲时间来处理其他查询,同时等待加载数据。

答案 2 :(得分:2)

正如@David所说,处理器在给定的瞬间只能做一件事。

那就是说,你的问题并不容易给出一个简单的答案。服务器将以排队的方式处理查询,这是最简单的情况(忽略资源限制等事情)。但是,只要第一个查询由于磁盘I / O或任何其他资源请求而必须放弃控制,第二个查询就有机会。它很可能在第一个之前完成,具体取决于每个查询的作用。

答案 3 :(得分:0)

通常会同时执行查询。可以处理的连接数取决于服务器,侦听器配置以及进程和会话初始化参数。如果您尝试打开也可能会出现错误。

如果您正在使用连接池,则每个池连接都会耗尽其中一个数据库实例的会话及其中一个进程。 (有人可能会纠正我在专用和共享听众之间的区别,但这大致是正确的)。池化连接上的每个请求(查询)都使用已建立的连接,因此它不需要新的TCP / IP套接字,也没有与套接字/会话创建相关的开销 - 这是您的原因之一首先使用汇集。

无论您是使用池化连接还是独立连接,执行查询的过程都独立于其他任何过程,并且不会等待任何其他查询完成。如果您正在进行更新,那么这不一定是真的 - 您可以等待另一个进程完成自己的更新 - 但如果您只是查询那么这不是一个因素。

您可能会争用资源,因此同时运行的两个查询可能需要比他们自己运行的任何一个查询稍长一些,但它们仍然同时运行。