《adonet数据连接》word版

《adonet数据连接》word版

ID:30364532

大小:92.88 KB

页数:18页

时间:2018-12-29

《adonet数据连接》word版_第1页
《adonet数据连接》word版_第2页
《adonet数据连接》word版_第3页
《adonet数据连接》word版_第4页
《adonet数据连接》word版_第5页
资源描述:

《《adonet数据连接》word版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、ADONET数据连接作者:貔貅发表于2010-07-2715:02原文链接阅读:2评论:0【IT168技术文档】21世纪什么最贵?数据库连接。对于以数据库做数据存储基石的应用系统来说,数据库连接是整个系统中最珍贵的资源之一。数据库连接池是为了更有效地利用数据库连接的最重要措施。它对于一个大型的应用系统的性能至关重要,特别是Web应用。ADO.NETDataProvider(以下简称DataProvider)会帮我们管理连接池,所以有人说使用连接池就像游儿童池一样轻松。但并不是说有了DataProvider程序员就万事无忧的,不正确地使用连接池可能导致你的应用在池里淹

2、死。笔者希望通过本文能让读者彻底明白连接池的重要性以及能根据实际情况正确配置连接池的参数,明白实际应用中出现的连接泄漏、"死连接"等异常情况和应对方法,让应用轻松畅游连接池。本文主要介绍ADO.NET1.1的连接池。1、什么是连接池连接池是DataProvider提供的一个机制,使得应用程序使用的连接保存在连接池里而避免每次都要完成建立/关闭连接的完整过程。要理解连接池,先要理解程序里SqlConnection.Open()、SqlConnection.Close()和打开/关闭一个"物理连接"的关系。DataProvider在收到连接请求时建立连接的完整过程是:先

3、连接池里建立新的连接(即"逻辑连接"),然后建立该"逻辑连接"对应的"物理连接"。建立"逻辑连接"一定伴随着建立"物理连接"。DataProvider关闭一个连接的完整过程是先关闭"逻辑连接"对应的"物理连接"然后销毁"逻辑连接"。销毁"逻辑连接"一定伴随着关闭"物理连接"。SqlConnection.Open()是向DataProvider请求一个连接,DataProvider不一定需要完成建立连接的完整过程,可能只需要从连接池里取出一个可用的连接就可以;SqlConnection.Close()是请求关闭一个连接,DataProvider不一定需要完成关闭连接的

4、完整过程,可能只需要把连接释放回连接池就可以。下面以一个例子来说明。本文例子都使用ConsoleApplication。我们使用操作系统的性能监视器来比较使用连接池与否,数据库的"物理连接"数量的不同。因为性能监视器至少每一秒采集一次数据,为方便观察效果,代码中Open和Close连接后都Sleep一秒。SqlConnectioncon=newSqlConnection("server=.;database=northwind;pooling=false;trusted_connection=true");for(inti=0;i10;i++){try{con.Op

5、en();System.Threading.Thread.Sleep(1000);}catch(Exceptione){Console.WriteLine(e.Message);}finally{con.Close();System.Threading.Thread.Sleep(1000);}}首先,不使用连接池做测试。以上程序中pooing=false表示不使用连接池,程序使用同一个连接串Open&Close了10次连接,使用性能计数器观察SQLServer的"物理连接"数量。从下面的锯齿图可以看出每执行一次con.Open(),SQLServer的"物理连接"数

6、量都增加一,而每执行一次con.Close(),SQLServer的"物理连接"数量都减少一。由于不使用连接池,每次Close连接的时候DataProvider需要把"逻辑连接"和"物理连接"都销毁了,每次Open连接的时候DataProvider需要建立"逻辑连接"和"物理连接",锯齿图因此而成。图1下面启用连接池再测试一次。把连接串的pooling参数改为true,另外在for循环后加上Console.Read()。从下图可以看出,从第一次Open到第执行完Console.Read()这段时间内,SQLServer的"物理连接"数量一直保持为1,直到关闭cons

7、ole应用程序的进程后SQLServer的"物理连接"数量才变为0。由于使用了连接池,每次Close连接的时候DataProvider只需把"逻辑连接"释放回连接池,对应的"物理连接"则保持打开的状态。每次Open连接的时候,DataProvider只需从连接池取出一个"逻辑连接",这样就可以使用其对应"物理连接"而不需建立新的"物理连接",直线图因此而成。图2在ADO.NET1.1下使用性能计数器观察连接池有关计数器需要注意两个bug。(1)当应用程序进程关闭后,计数器"SqlClient:Current#pooledconnections"和"SqlClie

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。