引述CSDN上一批帖子 的回覆:數據庫
第一,有1個數據庫服務器,最大鏈接數容許300。我不明白爲何你的數據庫最大鏈接數是300,
能夠經過select @@MAX_CONNECTIONS查看最大鏈接數,即使如此,也罷,往下看
第二,即使是最大鏈接數是300,你有1000個客戶端,客戶端啓用了鏈接池,也沒有關係,鏈接池是一種客戶端機制,若是服務器端強制斷開,那客戶端緩存的鏈接也沒用,個人意思就是,即使是客戶端開啓了鏈接池,客戶端的鏈接池也不會「綁架」數據庫鏈接,對於數據庫的鏈接,是數據庫服務器說了算的,不會由於客戶端啓用了鏈接池,同時不釋放鏈接,服務器就沒法工做了。
舉個極端的例子,數據庫服務器,最大鏈接數容許300,一個客戶啓用鏈接池以後,端緩存了300個鏈接,那豈不是全部的其餘的客戶端都沒法訪問數據庫了,等因而數據庫被這一個客戶端「綁架」了。可能嗎?
要知道服務器是主動的,客戶端是被動的,服務器須要新建鏈接的時候,若是發現鏈接資源沒有了,將會去釋放其餘客戶端緩存的鏈接池中創建的鏈接的。
客戶端啓用鏈接池以後,使用鏈接池中的數據庫鏈接的時候不是沒有任何校驗措施的,最起碼,使用以前,要看看這個鏈接是否有效,是否被服務器強制斷開(踢掉)等等。
另一個問題,我以爲樓主還沒弄清楚,就是併發的,你併發訪問數據庫,也就是多個客戶端訪問以後立馬斷開,好比你最大鏈接數是300,若是有1000我的同時(我是說同時,是同一個時間點,同一分鐘同一秒同一毫秒同一微妙,你明白這個同時的含義吧)去點擊一個按鈕,訪問數據庫,那麼,此時數據庫會先對一部分鏈接進行數據庫操做,待先拿到數據庫鏈接資源的會話操做完成以後,其餘的會話才能創建鏈接,此時也並非說其餘客戶端沒法訪問數據庫,而是說要等待,至於等待多久,要看你鏈接一次數據庫通過多久再去釋放這個鏈接,並非說你有超過了數據庫最大鏈接的用戶數,這些用戶就沒法訪問數據庫了,除非(我是說除非)你這1000個客戶端同一時刻去訪問數據庫,會出現由於數據庫鏈接資源不足而等待(獲取數據庫鏈接資源)延遲(也就是延遲,還不是不可訪問),不然,根本就不會出現你說的什麼併發問題。緩存