小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

抓蟲系列(三) 不要輕視web程序中常用的三個“池” 之數(shù)據(jù)庫連接池

 ThinkTank_引擎 2017-06-15

前篇回顧:應用程序池在項目中引發(fā)的問題不多,不過如果遇到了沒有經(jīng)歷過的話可能會比較茫然,呵呵。當然重點還是數(shù)據(jù)庫連接池與線程池了。

本篇蟲子就結(jié)合demo程序給大家演示下數(shù)據(jù)庫連接池會給大家的程序帶來什么樣的影響。

private string mConnectionString = "server=127.0.0.1;uid=chongzi;pwd=123456;database=AntiXSS;Connection Reset=FALSE;Max Pool Size=15"

連接字符串中設(shè)定池化,池的最大數(shù)目為15

  [Serializable]
   public class DAL : IDisposable
   {
       public DAL()
       {         
               DbHelper dh = new DbHelper();
               DataSet ds = dh.excSqlRetDataSet("select getdate()");
               Console.WriteLine(ds.Tables[0].Rows[0][0].ToString());        
       }
       public void Dispose()
       {
       }
   }
public DataSet excSqlRetDataSet(string sqlString)
       {
           DataSet ds = null;
           if (sqlString.Length == 0)
           {
               return ds;
           }
           for (int i = 0; i < 20; i++)
           {
               SqlConnection conn = new SqlConnection(mConnectionString);
               ds = new DataSet();
               string sqlCommand = sqlString;
               SqlDataAdapter da = new SqlDataAdapter(sqlCommand, conn);
               da.Fill(ds);
               //注意了 我這里沒有關(guān)閉鏈接
               //conn.Close();
           }
           return ds;
       }

初始數(shù)據(jù)庫連接數(shù)1

啟動控制臺應用程序

 開啟3個進程

 4個!?。?很好 至于為什么不是61個 蟲子先賣個關(guān)子留到下面再說

那么 我們換成pooling=false看看

private string mConnectionString = "server=127.0.0.1;uid=chongzi;pwd=123456;database=AntiXSS;Connection Reset=FALSE;Pooling=FALSE";

 初始是1個

我們同樣開3個進程

看結(jié)果

 

 1個~ ~

Conn這個鏈接對象我一直沒有手動釋放它。

對于這種現(xiàn)象我的解釋是:

ADO.NET不依賴于ole db提供程序,而是使用.net托管提供的程序,可以斷開connection而保留當前數(shù)據(jù)集可用,也就是非連接的方式。通常我們的程序默認是池化的,據(jù)庫連接池中可能存在著多個沒有被使用的連接一直連接著數(shù)據(jù)庫。

總結(jié)一下:

 

池化,提高性能,但是同時會提高連接數(shù)。至于連接是否活動帶來的影響未作分析。

非池化,性能一般,但是連接每次都是自動釋放。

而且現(xiàn)在大家的應用程序當中,很多都是配置了池化但是實現(xiàn)了非池化。

回到上面的那個問題,為什么沒有出現(xiàn)61個。

我們來修改下代碼

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public DataSet excSqlRetDataSet(string sqlString)
       {
           DataSet ds = null;
           if (sqlString.Length == 0)
           {
               return ds;
           }
           for (int i = 0; i < 20; i++)
           {
               SqlConnection conn = new SqlConnection(mConnectionString);
               conn.Open();
               //ds = new DataSet();
               //string sqlCommand = sqlString;
               //SqlDataAdapter da = new SqlDataAdapter(sqlCommand, conn);
               //da.Fill(ds);
               //注意了 我這里沒有釋放鏈接
               //conn.Close();
           }
           return ds;
       }

 

 

 

改哪里 自己找吧 蟲子就不多說了 嘿嘿看效果圖 初始化就不接了 同樣3個進程

 看到這里不需要蟲子解釋 你們也應該都懂了 .net如此為大家著想 是好事還是壞事 各自評定了。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多