亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

.NET程序中對連接池的管理方法

2019-11-18 12:04:32
字體:
來源:轉載
供稿:網友

  對于訪問量高的系統,每次創建一個連接都會消耗一定的資源,我們可以事先創建好一定數量的連接放入連接池中提供給用戶使用,用戶使用完后把連接返回連接池,這里我就來說說連接池的治理。
  
  首先,讓我們來看看連接池的概念:
  1。連接池答應應用程序從連接池中獲得一個連接并使用這個連接,而不需要為每一個連接請求重新建立一個連接。一旦一個新的連接被創建并且放置在連接池中,應用程序就可以重復使用這個連接而不必實施整個數據庫連接創建過程。
  2。當應用程序請求一個連接時,連接池為該應用程序分配一個連接而不是重新建立一個連接;當應用程序使用完連接后,該連接被歸還給連接池而不是直接釋放。
  
  優點:
  1。使用連接池的最主要的優點是性能。
  2。創建一個新的數據庫連接所耗費的時間主要取決于網絡的速度以及應用程序和數據庫服務器的(網絡)距離,而且這個過程通常是一個很耗時的過程。而采用數據庫連接池后,數據庫連接請求可以直接通過連接池滿足而不需要為該請求重新連接、認證到數據庫服務器,這樣就節省了時間。
  
  缺點:
  1。數據庫連接池中可能存在著多個沒有被使用的連接一直連接著數據庫(這意味著資源的浪費)。
  ps:這必須要求開發人員在開發時估計這個系統最大提供的數量是多少。
  
  池的創建和分配
  當連接打開時,將根據一種精確的匹配算法來創建連接池,該算法會使連接池與連接中的字符串相關聯。每個連接池都與一個不同的連接字符串相關聯。當新連接打開時,假如連接字符串不精確匹配現有池,則將創建一個新池。
  
  在以下示例中,將創建三個新的 SqlConnection 對象,但只需要使用兩個連接池來治理這些對象。請注重,第一個和第二個連接字符串的差異在于為 Initial Catalog 分配的值。
  
  SqlConnection conn = new SqlConnection();
  conn.ConnectionString = "Integrated Security=SSPI;Initial Catalog=northwind";
  conn.Open();
  // 連接池A創建了
  
  SqlConnection conn = new SqlConnection();
  conn.ConnectionString = "Integrated Security=SSPI;Initial Catalog=pubs";
  conn.Open();
  // 連接池B創建了,因為ConnectionString與A不匹配
  
  SqlConnection conn = new SqlConnection();
  conn.ConnectionString = "Integrated Security=SSPI;Initial Catalog=northwind";
  conn.Open();
  // 使用A的連接池,因為ConnectionString與A匹配
  
  連接池一旦創建,直到活動進程終止時才會被毀壞。非活動或空池的維護只需要最少的系統開銷。
  
  連接的添加
  連接池是為每個唯一的連接字符串創建的。當創建一個池后,將創建多個連接對象并將其添加到該池中,以滿足最小池大小的要求。連接將根據需要添加到池中,直至達到最大池大小。
  
  當請求 SqlConnection 對象時,假如存在可用的連接,則將從池中獲取該對象。若要成為可用連接,該連接當前必須未被使用,具有匹配的事務上下文或者不與任何事務上下文相關聯,并且具有與服務器的有效鏈接。
  
  假如已達到最大池大小且不存在可用的連接,則該請求將會排隊。當連接被釋放回池中時,連接池治理程序通過重新分配連接來滿足這些請求。對 Connection 調用 Close 或 Dispose 時,連接被釋放回池中。
  
  警告  建議使用完 Connection 后始終將其關閉,以便連接可以返回到池中。這可以使用 Connection 對象的 Close 或 Dispose 方法來實現。不是顯式關閉的連接可能不會添加或返回到池中。例如,假如連接已超出范圍但沒有顯式關閉,則僅當達到最大池大小而該連接仍然有效時,該連接才會返回到連接池中。
  注重  不要在類的 Finalize 方法中對 Connection、DataReader 或任何其他托管對象調用 Close 或 Dispose。在終結器中,僅釋放類直接擁有的非托管資源。假如類不擁有任何非托管資源,則不要在類定義中包含 Finalize 方法。有關更多信息,請參見垃圾回收編程。
  
  連接的移除
  假如連接生存期已過期,或者連接池治理程序檢測到與服務器的連接已斷開,連接池治理程序將從池中移除該連接。請注重,只有在嘗試與服務器進行通信后,才可以檢測到這種情況。假如發現某連接不再連接到服務器,則會將其標記為無效。連接池治理程序會定期掃描連接池,查找已釋放到池中并標記為無效的對象。找到后,這些連接將被永久移除。
  
  假如存在與已消失的服務器的連接,那么即使連接池治理程序未檢測到已斷開的連接并將其標記為無效,仍有可能將此連接從池中取出。當發生這種情況時,將生成異常。但是,為了將該連接釋放回池中,仍必須將其關閉。
  
  字符串要害字:
  Connection Lifetime 0 當連接返回到池中時,將對它的創建時間和當前時間進行比較,假如時間間隔超過由 Connection Lifetime 指定的值(以秒為單位),則會毀壞該連接。在聚集配置中可以使用它來強制在運行服務器和剛聯機的服務器之間達到負載平衡。
  假如值為零 (0),則將使池連接具有最大的超時期限。
  
  Connection Reset 'true' 確定在從池中移除數據庫連接時是否將其重置。對于 Microsoft SQL Server 版本 7.0,假如設置為 false,將避免在獲取連接時經歷一個額外的往返過程,但必須注重的是連接狀態(如數據庫上下文)不會被重置。
  Enlist 'true' 當為 true 時,假如存在事務上下文,池治理程序將自動在創建線程的當前事務上下文中登記連接。
  Max Pool Size 100 池中答應的最大連接數。
  Min Pool Size 0 池中維護的最小連接數。
  Pooling 'true' 當為 true 時,將從相應的池中取出連接,或者在必要時創建連接并將其添加到相應的池中。
  
  實例代碼:
  namespace HowTo.Samples.ADONET
  {
  
  using System;
  using System.Data.SqlClient;
  
  public class connectionpooling
  {
  public static void Main()
  {
  connectionpooling myconnectionpooling = new connectionpooling();
  myconnectionpooling.Run();
  }
  
  public void Run()
  {
  try
  {
  String connString;
  
  // Specification in the connection string:
  // Please note: Pooling is implicit, you automatically get it unless you disable it.
  //       Therefore, "true" is the default for the pooling keyWord (pooling=true).
  // Connection Reset:  False
  // Connection Lifetime: 5
  // Enlist:       true
  // Min Pool Size:    1
  // Max Pool Size:    50
  connString = "server=(local)//NetSDK;Trusted_Connection=yes;database=northwind;" +
  "connection reset=false;" +
  "connection lifetime=5;" +
  "min pool size=1;" +
  "max pool size=50";
  
  SqlConnection myConnection1 = new SqlConnection(connString);
  SqlConnection myConnection2 = new SqlConnection(connString);
  SqlConnection myConnection3 = new SqlConnection(connString);
  
  // Open two connections.
  Console.WriteLine ("打開兩個連接。");
  myConnection1.Open();
  myConnection2.Open();
  
  // Now there are two connections in the pool that matches the connection string.
  // Return the both connections to the pool.
  Console.WriteLine ("將兩個連接都返回到池中。");
  myConnection1.Close();
  myConnection2.Close();
  
  // Get a connection out of the pool.
  Console.WriteLine ("從池中打開一個連接。");
  myConnection1.Open();
  
  // Get a second connection out of the pool.
  Console.WriteLine ("從池中打開第二個連接。");
  myConnection2.Open();
  
  // Open a third connection.
  Console.WriteLine ("打開第三個連接。");
  myConnection3.Open();
  
  // Return the all connections to the pool.
  Console.WriteLine ("將所有三個連接都返回到池中。");
  myConnection1.Close();
  myConnection2.Close();
  myConnection3.Close();
  }
  catch (Exception e)
  {
  // Display the error.
  Console.WriteLine(e.ToString());
  }
  }
  }
  
  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
2020国产精品视频| 精品国产一区二区三区久久狼黑人| 欧美日韩成人在线视频| www.亚洲天堂| 欧美电影在线观看完整版| 欧洲亚洲妇女av| 日韩中文字幕视频在线| 国产在线高清精品| 国产成人精品综合久久久| 亚洲最大福利视频网| 久久国产一区二区三区| 91精品免费看| 深夜精品寂寞黄网站在线观看| 色婷婷av一区二区三区在线观看| 狠狠色噜噜狠狠狠狠97| 最近2019好看的中文字幕免费| 久久影视三级福利片| 精品国产一区二区三区久久狼5月| 国产精品美女999| 97在线精品视频| 精品国产91久久久| 欧美午夜精品久久久久久久| 亚洲欧美综合精品久久成人| 538国产精品视频一区二区| 在线观看视频亚洲| 91久久嫩草影院一区二区| 国产日韩欧美电影在线观看| 亚洲人成网站777色婷婷| 91亚洲精品久久久久久久久久久久| 蜜月aⅴ免费一区二区三区| 欧美专区第一页| 欧美极品少妇与黑人| 国产成人免费av电影| 亚洲品质视频自拍网| 国产精品香蕉在线观看| 粉嫩av一区二区三区免费野| 国产一区二区三区在线免费观看| 国产日韩精品视频| 高清欧美性猛交| 亚洲国产美女久久久久| 亚洲精品国产拍免费91在线| 91黄色8090| 日韩精品在线视频| 欧美日韩人人澡狠狠躁视频| 欧美尤物巨大精品爽| 亚洲欧美制服中文字幕| 亚洲黄色成人网| 伊人成人开心激情综合网| 亚洲天堂男人天堂| 国产91色在线播放| 欧美精品第一页在线播放| 午夜精品在线视频| 成人两性免费视频| 欧美日韩福利电影| 91久热免费在线视频| 亚洲bt欧美bt日本bt| 一区二区三区天堂av| 日韩最新av在线| 成人精品久久一区二区三区| 国产人妖伪娘一区91| 日韩av中文字幕在线免费观看| 98精品国产高清在线xxxx天堂| 久久久久久久激情视频| 欧美极品在线播放| 日本久久中文字幕| 久久理论片午夜琪琪电影网| 免费不卡在线观看av| 亚洲娇小xxxx欧美娇小| xvideos成人免费中文版| 奇门遁甲1982国语版免费观看高清| 亚洲欧美综合区自拍另类| 永久免费毛片在线播放不卡| 国产精品久久久久99| 亚洲国产私拍精品国模在线观看| 亚洲一区亚洲二区| 91香蕉国产在线观看| 美日韩精品视频免费看| 青草青草久热精品视频在线网站| 午夜剧场成人观在线视频免费观看| 国产91精品久久久久久| 久久精品男人天堂| 久久中国妇女中文字幕| 欧美激情亚洲另类| 日韩精品在线观| 视频在线观看99| 欧美日本中文字幕| 国产精品久久久久久久一区探花| 欧美大片网站在线观看| 在线精品播放av| 亚洲第一网中文字幕| 亚洲欧美日韩综合| 国产91网红主播在线观看| 亚洲欧美制服综合另类| 日本高清视频一区| 亚洲国产精品专区久久| 欧美大尺度电影在线观看| 欧美视频裸体精品| 国产一区深夜福利| 国产亚洲精品久久久优势| 久久精品国产久精国产思思| 日韩精品在线免费播放| 亚洲性av在线| 色yeye香蕉凹凸一区二区av| 成人午夜在线观看| 国产主播欧美精品| 日韩电影中文字幕| 亚洲va男人天堂| 亚洲成年人在线播放| 亚洲第一av网| 97视频人免费观看| 青青草精品毛片| 日韩精品中文字| 国产男人精品视频| 亚洲电影免费观看高清完整版在线观看| 国产亚洲一级高清| 97色在线视频观看| 91久久夜色精品国产网站| 92裸体在线视频网站| 欧美成aaa人片免费看| 久久久精品网站| 琪琪亚洲精品午夜在线| 性色av一区二区三区免费| 中文字幕一区电影| 色香阁99久久精品久久久| 在线观看国产精品91| 欧美日韩免费观看中文| 中文字幕亚洲在线| 欧美激情xxxx性bbbb| 国产精品女视频| 成人免费视频网| 久久精品视频中文字幕| 国产成人精品最新| 国产在线精品一区免费香蕉| 国产成人高潮免费观看精品| 久久久久久久色| 欧美午夜xxx| 日韩中文字幕网站| 国产在线日韩在线| 久久久久久久国产精品| 亚洲一区免费网站| 538国产精品一区二区免费视频| 国产午夜精品全部视频播放| 亚洲网站在线播放| 国产精品激情av电影在线观看| 欧美黑人xxxⅹ高潮交| www.欧美三级电影.com| 国产精品久久国产精品99gif| 久久免费视频观看| 欧美激情一区二区三区在线视频观看| 亚洲精品美女免费| 成人国产亚洲精品a区天堂华泰| xvideos亚洲人网站| 成人福利视频网| 日韩欧美a级成人黄色| 美女撒尿一区二区三区| 日本三级久久久| 国产精品一区久久| 精品久久久久人成| 欧美大片大片在线播放| 国产精品678| 51ⅴ精品国产91久久久久久| 中文字幕亚洲天堂| 精品国产鲁一鲁一区二区张丽| 亚洲黄色av女优在线观看|