ADO.NET之連接池技術(shù)的使用詳解
連接到數(shù)據(jù)庫服務(wù)器通常需要一定的時間,且服務(wù)器也需要一定的資源來處理連接。Web應(yīng)用程序有時處理成千上萬的連接,需要相當(dāng)多的資源來處理連接。ADO.NET具有連接池的特性,連接池的功能是保留一定數(shù)量的連接,當(dāng)用戶使用相同的連接字符串再次連接服務(wù)器時,ASO.NET將使用連接池中的連接而不用重新發(fā)起一次連接過程。當(dāng)調(diào)用Close方法關(guān)閉連接時,ADO.NET將使用連接池中的連接而不用重新發(fā)起一次連接過程。當(dāng)調(diào)用Close方法關(guān)閉連接時,連接將會返回到連接池中,下次再次調(diào)用Open方法時,將從連接池中取出一個連接使用。
數(shù)據(jù)庫連接字符串默認(rèn)為啟用連接池。使用連接池可以在連接字符串中用pooling=true/false來控制,設(shè)置連接池最大值和最小值可以使用Max Pool Size=200;Min Pool Size=1; 進(jìn)行控制。
下邊新建一個控制臺應(yīng)用程序來演示連接池的使用,其實(shí)我們僅僅是在Connection String中使用pooling=false/true來控制,默認(rèn)是使用連接池技術(shù)的,也就是pooling=true:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
private static readonly string connectionString1 = @"Data Source=.;Initial Catalog=Northwind;Integrated Security=True;pooling=true;";//默認(rèn)值即為true,所以可省略pooling=true
private static readonly string connectionString2 = @"Data Source=.;Initial Catalog=Northwind;Integrated Security=True;pooling=false;";
static void Main(string[] args)
{
long startTicks1 = DateTime.Now.Ticks;
using (SqlConnection conn1 = new SqlConnection(connectionString1))
{
for (int i = 0; i < 100; i++)
{
conn1.Open();
conn1.Close();
}
}
long endTicks1 = DateTime.Now.Ticks;
long usedTicks1 = endTicks1 - startTicks1;
Console.WriteLine("Used time: " + usedTicks1);
long startTicks2 = DateTime.Now.Ticks;
using (SqlConnection conn2 = new SqlConnection(connectionString2))
{
for (int i = 0; i < 100; i++)
{
conn2.Open();
conn2.Close();
}
}
long endTicks2 = DateTime.Now.Ticks;
long usedTicks2 = endTicks2 - startTicks2;
Console.WriteLine("Used time: " + usedTicks2);
}
}
}
輸出結(jié)果:
pooling=true: 710040
pooling=false: 3100177
相關(guān)文章
.NET實(shí)現(xiàn)異步編程async和await
這篇文章介紹了.NET實(shí)現(xiàn)異步編程async和await的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03用WPF實(shí)現(xiàn)屏幕文字提示的實(shí)現(xiàn)方法
本文介紹WPF應(yīng)用程序?qū)崿F(xiàn)在屏幕上顯示一行或多行文字通知。它沒有標(biāo)題欄和最大化最小化等按鈕,可以有半透明背景以使文字的顯示更清晰,鼠標(biāo)點(diǎn)擊后提示消失。2013-07-07動態(tài)ItemTemplate的實(shí)現(xiàn)(譯) - item,template
動態(tài)ItemTemplate的實(shí)現(xiàn)(譯) - item,template...2007-02-02精彩回顧!Visual Studio 2017正式版發(fā)布全紀(jì)錄
兩個小時的Visual Studio 2017正式版發(fā)布紀(jì)錄內(nèi)容還是很豐富的,這篇文章就為大家回顧了Visual Studio 2017正式版發(fā)布全過程,感興趣的小伙伴們可以參考一下2017-03-03.NET5控制臺程序使用EF連接MYSQL數(shù)據(jù)庫的方法
這篇文章主要介紹了.NET5控制臺程序使用EF連接MYSQL數(shù)據(jù)庫,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08.NET中 關(guān)于臟讀 不可重復(fù)讀與幻讀的代碼示例
本篇文章小編將為大家介紹,.NET中 關(guān)于臟讀 不可重復(fù)讀與幻讀的代碼示例,有需要的朋友可以參考一下2013-04-04