如何證明 ADO.NET 預設有使用 Connection Pooling 的機制
使用 Connection Pooling 的機制,可以加快我們存取資料庫的速度。
預設 ADO.NET 是開啟 Connection Pooling 的,那要如何證明呢?
筆者用一個小程式,取得 InnerConnection 來做比較,在有開啟 Connection Pooling 下,因兩個物件相同,故會得到 True。
如下圖:
若將連線字串改為 @"Data Source=.\SQLExpress;Integrated Security=True;Pooling=False"; 執行結果為 False(代表沒有使用 Connection Pooling 的機制)
程式碼如下:
using System;
using System.Reflection;
using System.Data.SqlClient;
namespace InnerConnectionDemo
{
class Program
{
static void Main(string[] args)
{
// 若將連線字串改為 @"Data Source=.\SQLExpress;Integrated Security=True;Pooling=False"; 執行結果為 False
string strConn = @"Data Source=.\SQLExpress;Integrated Security=True;";
PropertyInfo propInnerConn;
propInnerConn = typeof(SqlConnection).GetProperty("InnerConnection", BindingFlags.NonPublic | BindingFlags.Instance);
object objInnerConn1, objInnerConn2;
using (SqlConnection cn = new SqlConnection(strConn))
{
cn.Open();
objInnerConn1 = propInnerConn.GetValue(cn, null);
}
using (SqlConnection cn = new SqlConnection(strConn))
{
cn.Open();
objInnerConn2 = propInnerConn.GetValue(cn, null);
}
Console.WriteLine("objInnerConn1 與 objInnerConn2 是否相同? {0}", objInnerConn1 == objInnerConn2);
}
}
}
筆者使用的環境為 Vista x64 w/SP1 + VSTS 2008 w/SP1 + SQL 2005 Express w/SP2.
Comments
Anonymous
September 23, 2008
PingBack from http://informationsfunnywallpaper.cn/?p=6781Anonymous
September 24, 2008
使用 Connection Pooling 的機制,可以加快我們存取資料庫的速度。 預設 ADO.NET 是開啟 Connection Pooling 的,那要如何證明呢? 筆者用一個小程式,取得 InnerConnection