Mysql資料庫連接池知識分享

來源:互聯網
上載者:User

標籤:資料庫連接池

Mysql資料庫連接池知識分享

 

使用優點:

串連池最大的優點是效能。建立一個新的資料庫連接是一個耗時耗資源的一個過程。而使用了串連池之後,串連請求可以直接通過串連池來提供而不需要重新串連、認證。這樣就節省了時間。

使用缺點:

串連池中可能會存在著多個沒有被使用一直串連著的資料庫,這意味著資源的浪費。

基本原理:

串連池基本的思想是在系統初始化的時候,將資料庫連接作為Object Storage Service在記憶體中,當使用者調用資料庫操作類MySqlConnection的Open()方法時,並非建立一個新的串連,而是從串連池中取出一個已建立的空閑連線物件。使用完畢後,使用者也並非將串連關閉,而是將串連放回串連池中,等待下一次調用。而串連的建立、斷開是由串連池自身來管理的。同時,還可以設定串連池的一些參數來控制串連池中的初始串連數、串連的上限、下限以及每個串連的最大使用次數、最大空閑時間等等。也可以通過其自身的管理機制來監視資料庫連接的數量、使用方式等。

主要屬性說明:

1、串連池啟用(pooling=true|false)

表示是否啟用串連池,當pooling=true時啟用串連池,等於false的時候不啟用串連池,預設狀態是啟用串連池的。

如果啟用串連池,當資料庫操作類調用Close()方法的時候並不是真正的關閉串連,而是將串連放回串連池中等待下次使用;如果不啟用串連池,則當調用Close()方法的時候被調用的資料庫連接將被銷毀,當再次需要用到連線物件的時候需要重建立立新的串連。

2、逾時時間(ConnectionTimeout)

是指連線物件在串連池中拿到串連的最大時間,如果超過該時間,程式將會拋出一個系統異常。ConnectionTimeout=0表示永遠不逾時。

3、最小串連數(MinimumPoolSize)

是串連池最少保持的資料庫連接,如果應用程式對資料庫連接的使用量不大,將會有一些的資料庫連接資源被浪費。

4、最大串連數(MaximumPoolSize)

是串連池能申請的最大串連數,系統預設的串連數是100,如果資料庫連接請求超過此數,後面的資料庫連接請求將被加入到等待隊列中,這會影響之後的資料庫操作。

 

測試過程:

軟體:VS2012、Navicat Premium、WampServer

1、測試pooling,最小串連數,最大串連數以及逾時

A.啟用串連池:將最小串連數設為2,最大串連數設為4,逾時時間為5秒

650) this.width=650;" width="553" height="208" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />

(圖1-1)

B.運行串連池測試程式,建立一個串連。

650) this.width=650;" width="367" height="189" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />

(圖1-2)

運行NavicatPremium,建立串連後(過程略),執行showprocesslist命令。發現實際上已經建立了2個串連。結果如:(db為example的為我們的測試庫)

650) this.width=650;" width="381" height="200" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />

(圖1-3)

由此可見,當設定了最小串連數,即使程式中只建立一個串連,資料庫端也會自動建立2個串連。

C.點擊第一個串連的“中斷連線”按鈕。串連狀態將會顯示為“未串連”;再次執行show processlist命令會發現串連池中依然存在兩個串連(圖形略)。

說明調用Close方法的時候實際上沒有關閉串連,只是將串連放回串連池中。

D.試圖建立5個串連,

650) this.width=650;" width="389" height="197" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />

(圖1-4)

650) this.width=650;" width="375" height="219" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />

(圖1-5)

點擊第5個串連5秒鐘後顯示第5個串連失敗。由此可見當前串連池只能容納4個串連,且逾時後程式會報出異常。

 

2、不啟用pooling

A.在資料庫連接字串中將pooling改為false

B.運行測試程式,建立一個串連,(圖1-1),執行showprocesslist命令,結果

650) this.width=650;" width="349" height="168" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />

(圖2-1)

C.點擊第一個串連的“中斷連線”按鈕,再次執行show processlist,結果如:

 

650) this.width=650;" width="392" height="160" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />

(圖2-2)

可見串連是真正的關閉了,並沒有儲存在串連池中。


Mysql資料庫連接池知識分享

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.