天天看點

了解資料庫連接配接池

連接配接池的概念:連接配接池是一個程序,該程序儲存連接配接并使其處于活動狀态,使連接配接可以被重複使用。在實際的應用場景中,相同的連接配接字元串對應一個連接配接池。如果用這個連接配接字元串new出多個資料庫連接配接,操作完相關的資料操作後,顯示close掉連接配接,對于資料庫而言,該連接配接并沒有被釋放,而隻不過是被标記為"關閉"狀态,當一次再次要用到該連接配接的時候,它可以從連接配接池中拿出來使用。然而,如果你有太多的連接配接都沒有close掉的話,那麼連接配接池裡打開的連接配接都未被标記為“關閉”狀态,這些連結是不可以重複利用的,當超過一定數額的時候就會出現連接配接異常。在沒有超過max pool size (該值可以在寫連接配接字元串的時候自己設定大小,預設為100)的情況下,如果沒有可以重複利用的連接配接,則,資料庫會自行往連接配接池中增加連接配接。

下面用一個簡單的例子來說明下:

了解資料庫連接配接池

代碼如下:

代碼

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

namespace ConnectionPool

{

public partial class Form1 : Form

{

SqlConnection conn = null ;

public Form1()

{

InitializeComponent();

}

private void Form1_Load( object sender, EventArgs e)

{

this .textBox1.Text = @" Data Source=HUAMA-QJ;

Initial Catalog=DBApp;Persist Security Info=True;User ID=sa;

Password=******;max pool size=5 " ;

}

private void btnOpen_Click( object sender, EventArgs e)

{

conn = new SqlConnection( this .textBox1.Text);

conn.Open();

}

private void btnClose_Click( object sender, EventArgs e)

{

if (conn != null )

conn.Close();

// SqlConnection.ClearPool(conn);

}

}

}

在Textbox裡設定了連接配接池中能夠容納連接配接的最大數:5個。

如果您點選“OpenConn”,你點選5次,這個時候在SQLSERVER MANAGEMENT STUDIO中執行sp_who2存儲過程可以看到以下結果:

了解資料庫連接配接池

如果你再次點選"openConn"這個時候就出現異常“”。

了解資料庫連接配接池

當然,你也可以配置min pool size,可以将上述的連接配接字元串中的max改成min,你會發現,你隻要點選一次"openConn"就會發現直接打開了5個連接配接,這個就是最小連接配接的含義。當你想要清除該連接配接字元串相關的連接配接的時候,也就是清除連接配接池中相關的連接配接,你可以用SqlConnection.ClearPool(conn);

大家可以自己親手體驗一下這個簡單的demo,然後再去體會連接配接池的作用。

轉載于:https://www.cnblogs.com/shineqiujuan/archive/2010/04/21/1717303.html