青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

君子性非異也,善假于物也。

如有恒,何須三更起,半夜眠;最怕莫,三天打魚兩天曬網(wǎng),竹籃打水一場空!
posts - 31, comments - 23, trackbacks - 0, articles - 30
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

[MSDN]使用連接池

Posted on 2007-12-21 01:33 neter 閱讀(520) 評論(0)  編輯 收藏 引用 所屬分類: 程序設(shè)計
使用連接池

連接到數(shù)據(jù)庫服務(wù)器通常由幾個需要很長時間的步驟組成。必須建立物理通道(例如套接字或命名管道),必須與服務(wù)器進(jìn)行初次握手,必須分析連接字符串信息,必須由服務(wù)器對連接進(jìn)行身份驗證,必須運(yùn)行檢查以便在當(dāng)前事務(wù)中登記,等等。

實際上,大多數(shù)應(yīng)用程序僅使用一個或幾個不同的連接配置。這意味著在執(zhí)行應(yīng)用程序期間,許多相同的連接將反復(fù)地打開和關(guān)閉。為了使打開的連接成本最低,ADO.NET 使用稱為連接池的優(yōu)化方法。

連接池減少新連接需要打開的次數(shù)。池進(jìn)程保持物理連接的所有權(quán)。通過為每個給定的連接配置保留一組活動連接來管理連接。只要用戶在連接上調(diào)用 Open,池進(jìn)程就會檢查池中是否有可用的連接。如果某個池連接可用,會將該連接返回給調(diào)用者,而不是打開新連接。應(yīng)用程序在該連接上調(diào)用 Close 時,池進(jìn)程會將連接返回到活動連接池集中,而不是真正關(guān)閉連接。連接返回到池中之后,即可在下一個 Open 調(diào)用中重復(fù)使用。

只有配置相同的連接可以建立池連接。ADO.NET 同時保留多個池,每個配置一個池。連接由連接字符串以及 Windows 標(biāo)識(在使用集成的安全性時)分為多個池。

池連接可以大大提高應(yīng)用程序的性能和可縮放性。默認(rèn)情況下,ADO.NET 中啟用連接池。除非顯式禁用,否則,連接在應(yīng)用程序中打開和關(guān)閉時,池進(jìn)程將對連接進(jìn)行優(yōu)化。還可以提供幾個連接字符串修飾符來控制連接池的行為。有關(guān)更多信息,請參見本主題后面的“使用連接字符串關(guān)鍵字控制連接池”。

池的創(chuàng)建和分配

在初次打開連接時,將根據(jù)完全匹配算法創(chuàng)建連接池,該算法將池與連接中的連接字符串關(guān)聯(lián)。每個連接池與不同的連接字符串關(guān)聯(lián)。打開新連接時,如果連接字符串并非與現(xiàn)有池完全匹配,將創(chuàng)建一個新池。按進(jìn)程、按應(yīng)用程序域、按連接字符串以及(在使用集成的安全性時)按 Windows 標(biāo)識來建立池連接。

在以下 C# 示例中創(chuàng)建了三個新的 SqlConnection 對象,但是管理時只需要兩個連接池。注意,根據(jù)為 Initial Catalog 分配的值,第一個和第二個連接字符串有所不同。

using (SqlConnection connection = new SqlConnection(
"Integrated Security=SSPI;Initial Catalog=Northwind"))
{
connection.Open();
// Pool A is created.
}
using (SqlConnection connection = new SqlConnection(
"Integrated Security=SSPI;Initial Catalog=pubs"))
{
connection.Open();
// Pool B is created because the connection strings differ.
}
using (SqlConnection connection = new SqlConnection(
"Integrated Security=SSPI;Initial Catalog=Northwind"))
{
connection.Open();
// The connection string matches pool A.
}

如果 MinPoolSize 在連接字符串中未指定或指定為零,池中的連接將在一段時間不活動后關(guān)閉。但是,如果指定的 MinPoolSize 大于零,在 AppDomain 被卸載并且進(jìn)程結(jié)束之前,連接池不會被破壞。非活動或空池的維護(hù)只需要最少的系統(tǒng)開銷。

Note注意

如果發(fā)生致命錯誤(例如故障轉(zhuǎn)移或注冊表中的別名更改),池將自動清除。

添加連接

連接池是為每個唯一的連接字符串創(chuàng)建的。當(dāng)創(chuàng)建一個池后,將創(chuàng)建多個連接對象并將其添加到該池中,以滿足最小池大小的要求。連接根據(jù)需要添加到池中,但是不能超過指定的最大池大小(默認(rèn)值為 100)。連接在關(guān)閉或斷開時釋放回池中。

在請求 SqlConnection 對象時,如果存在可用的連接,將從池中獲取該對象。連接要可用,必須未使用,具有匹配的事務(wù)上下文或未與任何事務(wù)上下文關(guān)聯(lián),并且具有與服務(wù)器的有效鏈接。

連接池進(jìn)程通過在連接釋放回池中時重新分配連接,來滿足這些連接請求。如果已達(dá)到最大池大小且不存在可用的連接,則該請求將會排隊。然后,池進(jìn)程嘗試重新建立任何連接,直到到達(dá)超時時間(默認(rèn)值為 15 秒)。如果池進(jìn)程在連接超時之前無法滿足請求,將引發(fā)異常。

Caution note警告

我們建議您在使用完連接時一定要關(guān)閉連接,以便連接可以返回池。要關(guān)閉連接,可以使用 Connection 對象的 Close 或 Dispose 方法,也可以通過在 C# 的 using 語句中或在 Visual Basic 的 Using 語句中打開所有連接。不是顯式關(guān)閉的連接可能不會添加或返回到池中。例如,如果連接已超出范圍但沒有顯式關(guān)閉,則僅當(dāng)達(dá)到最大池大小而該連接仍然有效時,該連接才會返回到連接池中。有關(guān)更多信息,請參見 Visual Basic 的using 語句(C# 參考)如何:釋放系統(tǒng)資源

Note注意

不要在類的 Finalize 方法中對 Connection、DataReader 或任何其他托管對象調(diào)用 Close 或 Dispose。在終結(jié)器中,僅釋放類直接擁有的非托管資源。如果類不擁有任何非托管資源,則不要在類定義中包含 Finalize 方法。有關(guān)更多信息,請參見垃圾回收

移除連接

連接池進(jìn)程定期掃描連接池,查找沒有通過 Close 或 Dispose 關(guān)閉的未用連接,并重新建立找到的連接。如果應(yīng)用程序沒有顯式關(guān)閉或斷開其連接,連接池進(jìn)程可能需要很長時間才能重新建立連接,所以,最好確保在連接中顯式調(diào)用 Close 和 Dispose。

如果連接長時間空閑,或池進(jìn)程檢測到與服務(wù)器的連接已斷開,連接池進(jìn)程會將該連接從池中移除。注意,只有在嘗試與服務(wù)器進(jìn)行通信之后才能檢測到斷開的連接。如果發(fā)現(xiàn)某連接不再連接到服務(wù)器,則會將其標(biāo)記為無效。無效連接只有在關(guān)閉或重新建立后,才會從連接池中移除。

如果存在與已消失的服務(wù)器的連接,那么即使連接池管理程序未檢測到已斷開的連接并將其標(biāo)記為無效,仍有可能將此連接從池中取出。這種情況是因為檢查連接是否仍有效的系統(tǒng)開銷將造成與服務(wù)器的另一次往返,從而抵消了池進(jìn)程的優(yōu)勢。發(fā)生此情況時,初次嘗試使用該連接將檢測連接是否曾斷開,并引發(fā)異常。

清除池

ADO.NET 2.0 引入了兩種新的方法來清除池:ClearAllPoolsClearPool。ClearAllPools 清除給定提供程序的連接池,ClearPool 清除與特定連接關(guān)聯(lián)的連接池。如果在調(diào)用時連接正在使用,將進(jìn)行相應(yīng)的標(biāo)記。連接關(guān)閉時,將被丟棄,而不是返回池中。

事務(wù)支持

連接是根據(jù)事務(wù)上下文來從池中取出并進(jìn)行分配的。除非在連接字符串中指定了 Enlist=false,否則,連接池將確保連接在 Current 上下文中登記。如果連接使用登記的 System.Transactions 事務(wù)關(guān)閉并返回池中,連接將保留在池中,以便使用相同 System.Transactions 事務(wù)對該連接池的下一次請求將返回相同的連接。如果該事務(wù)沒有可用連接,在該連接打開時,將自動注冊該連接。

當(dāng)連接關(guān)閉時,它將被釋放回池中,并根據(jù)其事務(wù)上下文放入相應(yīng)的子部分。因此,即使分布式事務(wù)仍然掛起,仍可以關(guān)閉該連接而不會生成錯誤。這樣,您就可以在隨后提交或中止分布式事務(wù)。

使用連接字符串關(guān)鍵字控制連接池

SqlConnection 對象的 ConnectionString 屬性支持連接字符串鍵/值對,可以用于調(diào)整連接池邏輯的行為。有關(guān)更多信息,請參見 ConnectionString

池碎片

池碎片是許多 Web 應(yīng)用程序中的一個常見問題,應(yīng)用程序可能會創(chuàng)建大量在進(jìn)程退出后才會釋放的池。這樣,將打開大量的連接,占用許多內(nèi)存,從而影響性能。

因為集成安全性產(chǎn)生的池碎片

連接根據(jù)連接字符串以及用戶標(biāo)識來建立池連接。因此,如果使用網(wǎng)站上的基本身份驗證或 Windows 身份驗證以及集成的安全登錄,每個用戶將獲得一個池。盡管這樣可以提高單個用戶的后續(xù)數(shù)據(jù)庫請求的性能,但是該用戶無法利用其他用戶建立的連接。這樣還使每個用戶至少產(chǎn)生一個與數(shù)據(jù)庫服務(wù)器的連接。這對特定 Web 應(yīng)用程序結(jié)構(gòu)會產(chǎn)生副作用,因為開發(fā)人員需要衡量安全性和審計要求。

因為許多數(shù)據(jù)庫產(chǎn)生的池碎片

許多 Internet 服務(wù)提供商在一臺服務(wù)器上托管多個網(wǎng)站。他們可能使用單個數(shù)據(jù)庫確認(rèn)窗體身份驗證登錄,然后為該用戶或用戶組打開與特定數(shù)據(jù)庫的連接。與身份驗證數(shù)據(jù)庫的連接將建立池連接,供每個用戶使用。但是,每個數(shù)據(jù)庫的連接存在一個獨立的池,因此增加了與服務(wù)器的連接數(shù)。

這也會對應(yīng)用程序設(shè)計產(chǎn)生副作用。但是,可以通過一個相對簡單的方式避免此副作用,而又不會影響連接 SQL Server 時的安全性。不是為每個用戶或組連接獨立的數(shù)據(jù)庫,而是連接到服務(wù)器上的相同數(shù)據(jù)庫,然后執(zhí)行 Transact-SQL USE 語句來切換為所需的數(shù)據(jù)庫。以下代碼段演示入如何創(chuàng)建與 master 數(shù)據(jù)庫的初始連接,然后切換到 databaseName 字符串變量中指定的所需數(shù)據(jù)庫。

C#:
// Assumes that command is a SqlCommand object.
using (SqlConnection connection = new SqlConnection(
  "Server=MSSQL1;uid=xxx;pwd=xxx;database=master"))
  {
    connection.Open();
    command.ExecuteNonQuery("USE " + databaseName);
  }

應(yīng)用程序角色和連接池

通過調(diào)用 sp_setapprole 系統(tǒng)存儲過程激活了 SQL Server 應(yīng)用程序角色之后,該連接的安全上下文無法重置。但是,如果啟用了池,連接將返回池,在重復(fù)使用池連接時會出錯。

如果使用的是 SQL Server 應(yīng)用程序角色,我們建議您在連接字符串中為應(yīng)用程序禁用連接池。有關(guān)更多信息,請參見知識庫文章“SQL application role errors with OLE DB resource pooling”。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲午夜视频| 亚洲一级黄色| 在线亚洲自拍| 美女视频黄免费的久久| 久久国产精品久久w女人spa| 性欧美18~19sex高清播放| 亚洲七七久久综合桃花剧情介绍| 欧美亚洲一区二区三区| 久久精品国内一区二区三区| 久久综合网hezyo| 久热精品视频在线观看一区| 欧美成ee人免费视频| 91久久久久久久久| 亚洲激情女人| 午夜精彩视频在线观看不卡 | 99视频一区| 日韩一级黄色片| 欧美一区久久| 欧美美女视频| 国产一区二区三区最好精华液| 国产拍揄自揄精品视频麻豆| 国产一区二区视频在线观看| 亚洲精品欧美极品| 欧美在线免费视频| 亚洲人成人77777线观看| 亚洲欧美综合国产精品一区| 欧美在线日韩| 欧美日韩中文字幕综合视频 | 99亚洲视频| 欧美在线观看你懂的| 欧美激情一二三区| 亚洲女性裸体视频| 欧美激情一二区| 狠狠狠色丁香婷婷综合激情| 99国产精品久久久久老师 | 亚洲自拍偷拍视频| 蜜桃久久av一区| 日韩手机在线导航| 久久夜色精品国产噜噜av| 欧美午夜不卡在线观看免费 | 一区二区电影免费在线观看| 久久精品视频免费播放| 亚洲精品视频免费在线观看| 久久久99久久精品女同性| 国产精品二区三区四区| 亚洲国产日日夜夜| 久久免费观看视频| 亚洲一区在线免费观看| 欧美日韩综合在线免费观看| 亚洲清纯自拍| 亚洲电影毛片| 久久久久网址| 国产欧美亚洲精品| 宅男噜噜噜66一区二区66| 老司机一区二区三区| 欧美一级二级三级蜜桃| 国产精品久久久久aaaa九色| 一本色道婷婷久久欧美| 亚洲欧洲视频| 欧美极品aⅴ影院| 亚洲精品免费一区二区三区| 欧美国产日韩精品| 久久综合九色| 亚洲激情婷婷| 亚洲国产精品久久久| 久久一区二区视频| 今天的高清视频免费播放成人| 久久精品99国产精品酒店日本| 亚洲一区激情| 国产日韩欧美三区| 久久亚洲私人国产精品va媚药 | 欧美黄色一区二区| 麻豆精品在线观看| 亚洲精品乱码| 夜夜嗨av一区二区三区四季av | 国产精品尤物| 久久久精品国产一区二区三区| 欧美在线观看天堂一区二区三区| 国产一区二区看久久| 免费成人毛片| 欧美精品一区二区蜜臀亚洲| 99成人免费视频| 亚洲视频观看| 激情综合色综合久久| 欧美激情一区三区| 欧美日韩午夜剧场| 欧美在线观看网站| 欧美ab在线视频| 亚洲欧美一区二区视频| 久久国产一区| 一本色道精品久久一区二区三区| av不卡免费看| 韩日精品视频| 亚洲免费成人av| 黄色影院成人| 亚洲精品偷拍| 国产综合香蕉五月婷在线| 亚洲日本激情| 国产一区二区三区高清在线观看 | 欧美在线国产精品| 久久只有精品| 久久成人免费网| 欧美国产综合视频| 久久精品亚洲一区二区| 欧美精品观看| 麻豆久久婷婷| 国产精品黄视频| 亚洲国产天堂网精品网站| 在线一区视频| 久久国产精品99国产精| 日韩亚洲不卡在线| 久久久久这里只有精品| 亚洲综合久久久久| 欧美喷水视频| 欧美高清视频在线| 狠狠入ady亚洲精品经典电影| 日韩视频不卡| 亚洲国产一二三| 久久动漫亚洲| 久久国产日本精品| 国产精品热久久久久夜色精品三区| 亚洲高清不卡在线| 在线成人欧美| 久久久噜噜噜| 老司机成人在线视频| 国产一在线精品一区在线观看| 国产精品99久久久久久宅男| 一本色道久久综合精品竹菊| 欧美电影在线播放| 亚洲国产成人av| 最新日韩av| 欧美黑人在线观看| 91久久精品国产91久久性色| 激情一区二区| 久久亚洲精品一区二区| 麻豆精品网站| 亚洲福利视频网| 免费日韩av片| 亚洲激情社区| 一区二区高清在线| 欧美三级电影大全| 一区二区三区高清不卡| 亚洲性xxxx| 国产精品天天摸av网| 国产精品99久久久久久久vr| 午夜视频一区在线观看| 国产精品一香蕉国产线看观看 | 久久久久久久综合色一本| 国产亚洲精品v| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲国产导航| 老巨人导航500精品| 免费日韩视频| 99国产精品视频免费观看| 欧美成人蜜桃| 一二三区精品福利视频| 午夜精品福利在线观看| 国产女人aaa级久久久级| 欧美一区午夜视频在线观看| 欧美成人小视频| 一区二区三区四区五区精品| 欧美视频手机在线| 久久本道综合色狠狠五月| 欧美寡妇偷汉性猛交| 日韩午夜中文字幕| 国产精品中文字幕在线观看| 久久久久久欧美| 亚洲欧洲综合| 欧美在线视频一区| 午夜视频在线观看一区二区三区| 亚洲黄色一区| 欧美另类一区| 欧美一级在线亚洲天堂| 亚洲第一页中文字幕| 亚洲欧美中文字幕| 又紧又大又爽精品一区二区| 欧美精品导航| 久久精品水蜜桃av综合天堂| 亚洲国产精品专区久久| 午夜电影亚洲| 亚洲欧洲在线免费| 国产欧美精品国产国产专区| 美女主播一区| 午夜视频一区二区| 亚洲美女91| 欧美不卡视频一区| 欧美在线播放一区| 中文国产成人精品久久一| 国产一区三区三区| 欧美日韩三级| 欧美电影资源| 久久久一二三| 欧美亚洲视频在线观看| 99国产精品视频免费观看一公开| 美女图片一区二区| 久久精品国产2020观看福利| 一本色道久久综合亚洲二区三区| 影音先锋另类| 狠狠色狠狠色综合日日tαg| 国产精品视频久久|