⑴ 資料庫連接池
在實際應用開發中,特別是在WEB應用系統中,如果JSP、Servlet或EJB使用JDBC直接訪問資料庫中的數據,每一次數據訪問請求都必須經歷建立資料庫連接、打開資料庫、存取數據和關閉資料庫連接等步驟,而連接並打開資料庫是一件既消耗資源又費時的工作,如果頻繁發生這種資料庫操作,系統的性能必然會急劇下降,甚至會導致系統崩潰。資料庫連接池技術是解決這個問題最常用的方法,在許多應用程序伺服器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了這項技術,無需自己編程,但是,深入了解這項技術是非常必要的。
資料庫連接池技術的思想非常簡單,將資料庫連接作為對象存儲在一個Vector對象中,一旦資料庫連接建立後,不同的資料庫訪問請求就可以共享這些連接,這樣,通過復用這些已經建立的資料庫連接,可以克服上述缺點,極大地節省系統資源和時間。
資料庫連接池的主要操作如下:
(1)建立資料庫連接池對象(伺服器啟動)。
(2)按照事先指定的參數創建初始數量的資料庫連接(即:空閑連接數)。
(3)對於一個資料庫訪問請求,直接從連接池中得到一個連接。如果資料庫連接池對象中沒有空閑的連接,且連接數沒有達到最大(即:最大活躍連接數),創建一個新的資料庫連接。
(4)存取資料庫。
(5)關閉資料庫,釋放所有資料庫連接(此時的關閉資料庫連接,並非真正關閉,而是將其放入空閑隊列中。如實際空閑連接數大於初始空閑連接數則釋放連接)。
(6)釋放資料庫連接池對象(伺服器停止、維護期間,釋放資料庫連接池對象,並釋放所有連接)。
⑵ 微軟sql Server 2008 R2 標准版(25用戶)最大並發連接數是多少及支持多少客戶端同時訪問
SQL Server 2008支持並發的連接數分兩種情況:
1)不啟用連接池
當創建到101個連接的時候,就無法再創建新連接了。也就是說,如果連接字元串不做任何處理,我們的程序只能夠跟SQLServer建立101個連接。
2)啟用連接池
在連接字元串中加入代碼:
Pooling=true;Max Pool Size=40000;Min Pool Size=0;
微軟在MSDN上對最大連接數的定義是:「默認是0,代表不限制,但最大連接數是32767。
SQL Server支持同時訪問的客戶端數量:
開發版、速成版有客戶連接限制,一般是10個連接。企業版、標准版沒有限制,硬體能支持多少就能支持多少。
(2)sql連接池的創建數量擴展閱讀
sql server 2008 R2 連接數過高的解決辦法:
由於公司最近兩個Web站點做了負載均衡,但是緩存機制仍然是 Asp.Net 自帶的緩存,這樣就導致了每台Web 伺服器內存中都有一份緩存,直接導致了多次請求DB資料庫,造成了DB連接數過高。
由於是兩個較大的站點兩台伺服器做負載均衡(負載平衡),所以,DB 的連接數也飆升,幾乎翻了3倍。
公司DB伺服器用的是 Sql Server 2008 R2 ,並且DB伺服器配置是相當的強悍的,連接數一度沖擊到740,真是讓人驚嘆不已。雖然鏈接數強悍,但是前台訪問的頁面 超時的 也是茫茫多,沒辦法,只能採用了緊急處理:
1、加大程序中的緩存,特別是頁面頭部加上 OutPutCache 緩存。
2、用上鏡像的備份DB伺服器,把2個站點的DB鏈接改到了鏡像的DB,這台鏡像DB和現在主DB是不在同一個機房的,目標就是容災和在高流量的情況下快速切換
⑶ 資料庫連接池的連接池是什麼啊
資料庫連接是一種關鍵的有限的昂貴的資源,這一點在多用戶的網頁應用程序中體現得尤為突出。對資料庫連接的管理能顯著影響到整個應用程序的伸縮性和健壯性,影響到程序的性能指標。資料庫連接池正是針對這個問題提出來的。資料庫連接池負責分配、管理和釋放資料庫連接,它允許應用程序重復使用一個現有的資料庫連接,而再不是重新建立一個;釋放空閑時間超過最大空閑時間的資料庫連接來避免因為沒有釋放資料庫連接而引起的資料庫連接遺漏。這項技術能明顯提高對資料庫操作的性能。
連接池基本的思想是在系統初始化的時候,將資料庫連接作為對象存儲在內存中,當用戶需要訪問資料庫時,並非建立一個新的連接,而是從連接池中取出一個已建立的空閑連接對象。使用完畢後,用戶也並非將連接關閉,而是將連接放回連接池中,以供下一個請求訪問使用。而連接的建立、斷開都由連接池自身來管理。同時,還可以通過設置連接池的參數來控制連接池中的初始連接數、連接的上下限數以及每個連接的最大使用次數、最大空閑時間等等。也可以通過其自身的管理機制來監視資料庫連接的數量、使用情況等。
資料庫連接池在初始化時將創建一定數量的資料庫連接放到連接池中,這些資料庫連接的數量是由最小資料庫連接數來設定的。無論這些資料庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數量。連接池的最大資料庫連接數量限定了這個連接池能佔有的最大連接數,當應用程序向連接池請求的連接數超過最大連接數量時,這些請求將被加入到等待隊列中。資料庫連接池的最小連接數和最大連接數的設置要考慮到下列幾個因素:
1. 最小連接數
是連接池一直保持的資料庫連接,所以如果應用程序對資料庫連接的使用量不大,將會有大量的資料庫連接資源被浪費;
2.最大連接數
是連接池能申請的最大連接數,如果資料庫連接請求超過此數,後面的資料庫連接請求將被加入到等待隊列中,這會影響之後的資料庫操作。
3).最小連接數與最大連接數相差太大
那麼最先的連接請求將會獲利,之後超過最小連接數量的連接請求等價於建立一個新的資料庫連接。不過,這些大於最小連接數的資料庫連接在使用完不會馬上被釋放,它將被放到連接池中等待重復使用或是空閑超時後被釋放。
⑷ 資料庫連接池為什麼要建立多個連接一個連接不可以嗎
最少建立一個連接,最多不能超過連接池設置的最大數,連接池的作用通俗的將就是:
單連接:只有一個連接。如果被使用,其他的來了就要等著,等他用完了你才能用,還要重新建立連接
連接池:有多個連接放在那。你來時一個被使用了。但還是有幾個沒有被使用,你可以拿沒有被使用的直接使用,甩重新建立連接。
⑸ 一個java項目會產生幾個Sql連接
正規一些的做法是採用連接池
就是可以配置最多能有幾個鏈接(connection的實例)
因為連接的產生是需要一些時間的,用完就丟掉的話,等到下次要用的時候,又要浪費時間去產生,所以可以把用完的放回到一個數據結構中(數組也是可以的~),下次來這里取就可以了,會快一些
你說的空前產生一個,是單例。這種情況一般很少見,因為只有一個連接,對於一個人來說使用上沒有問題,用完放著,下次用再去拿,然後重復。
但是如果你在用的時候肆虧廳別人也要用呢?那他就必須等待了,只有效率就有問題了。
相關知裂隱識。 資料庫連接池
⑹ sqlserver 資料庫連接數設置多大合適
SQL SERVER 理論上有32767個邏輯連接,SQL SERVER根據系統自行調配連接池。
操作系統的用戶數:即同時通過網路連接到這台電腦上面的用戶限制,以5用戶操作系統,搭建的文件伺服器為例,去同時訪問這個文件伺服器的網路用戶為5個。
購買資料庫有兩種方式:
1、根據用戶數購買。
2、根據cpu個數購買。
根據用戶數購買,假如購買了一個50用戶的資料庫,那麼可以通過網路訪問資料庫的人數限制為50。
根據cpu個數購買的資料庫訪問人數不受限制,伺服器上面有幾顆cpu就要買幾個授權的SQL
server,但是如果你只買一個授權的話資料庫也可以正常運行,但是微軟認為你的資料庫不合法。就如同盜版系統。
一個連接不等於一個用戶,單獨一個用戶可以有超過一個的連接,單獨一個連接可以有超過一個用戶。
如何監測SQLServer的連接數:
SP_WHO 'loginName'
loginName
是當然登陸Sql的用戶名,一般程序裡面都會使用一個username來登陸SQL這樣通過這個用戶名就能查看到此用戶名登陸之後佔用的連接了。如果不寫loginName,那麼返回的就是所有的連接。
既然連接數是可預測、可監測的,那麼就是可度量的,就可以根據實際情況來評估或測試程序的並發放量了。