上篇博客介绍了临时表的使用,以及它的生命周期和连接池的关系。那么为了能更好的把握临时表的产生和消亡,本篇博客就介绍Vb.net连接池。在打开和关闭数据库连接时的耗费的资源是非常高的。那么在程序需要频繁的操作数据库时就将影响程序的性能。那么为了提高资源的利用率,以及程序的性能VB.NET中就使用了一种连接数据库的机制,即连接池。先看一张图:

 

大家从图中可以看出,连接池是保存与数据库内部连接的一个区域,它和应用程序是不直接相连的。换句话说就是解耦了。那么它的工作机制是这样的:应用程序需要访问数据库时,先创建一个Sqlconnection对象,然后去连接池中匹配合适的连接。如果存在合适的连接就直接使用,当没有合适的连接时才重新创建一个连接。那么当创建连接的对象Close或者Dispose时,程序也不销毁连接而是归还给连接池,以便下次使用。但是对于连接池我们还需要做一些更细致的了解。例如:匹配连接、内部连接何时被销毁,何时创建等等问题。

如何匹配连接:在连接池中认为,只有连接字符串完全一样时才是相同的连接。例如我们在机房收费系统中用的连接字符串只有一个。也就是说,每一个内部连接都是一样的,只要连接池中存在内部连接就可以被Sqlconnection匹配使用。链接池的行为实在SQLConnection对象的ConnectionString属性来控制的,接下来了解其中的参数。

MinPool Size(连接池的最小容量):连接池允许的连接数的最小值,其缺省值为0。当链接池中空闲的内部连接大于最小容量时,多余的连接将被销毁。即连接池中至少会保持最小容量的连接数。

Connection Lifetime(链接生存时间):当一个连接被返回到连接池时,它的创建时间会与当前时间进行对比。如果这个时间跨度超过了连接的有效期的话,连接就被取消。其缺省值为0,即不限时间。同时需要知道的是只有在连接被释放回连接池时才检查该连接的Connection lifetime,也就是说当连接被使用或者空闲时是不检查Connection lifetime。所以,大部分连接的生存时间都要大于规定的值。另外,连接池中最小容量的连接时不被connection lifetime限制的。

Max pool size(连接池最大连接数):连接池允许的最大连接数,当连接池中存在最大连接数时,新的连接将不被建立,该连接请求就要等候直到有空闲的连接。这里需要非常注意DataReader的使用。

综合以上内容,我们再回顾一下上一篇博客临时表的使用问题。因为在机房收费系统中我们使用的连接字符串仅有一个,即认为内部连接都是一样的。又因为临时表的生存周期依赖内部连接,而且我们无法控制内部连接的实际销毁实际那。所以我们的最小连接池的数量不能是0,即保证有效的内部连接存在,这就保持了临时表的生存,不会再程序运行中间就被销毁。那么,到这里临时表和连接池的介绍就完结了。下面是,我认为合理的连接字符串:

"Datasource=.\SQLExpress;Initial Catalog="数据库名";Connection Lifetime= 10;Min pool size=1;User ID=sa;password=123456"

VB.net 连接池的更多相关文章

  1. SQL Server 连接池 (ADO.NET) MSDN

    连接到数据库服务器通常由几个需要很长时间的步骤组成. 必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次握手,必须分析连接字符串信息,必须由服务器对连接进行身份验证,必须运行检查以便在当前 ...

  2. 连接SQLServer时,因启用连接池导致孤立事务的原因分析和解决办法

    本文出处:http://www.cnblogs.com/wy123/p/6110349.html 之前遇到过这么一种情况: 连接数据库的部分Session会出现不定时的阻塞,这种阻塞时长时短,有时候持 ...

  3. C3p0连接池配置

    在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");)   ②连接数据库(Connection co ...

  4. Java第三方数据库连接池库-DBCP-C3P0-Tomcat内置连接池

    连接池原理 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”.预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去.我们可以通过设定连接池 ...

  5. common-pool2 学习:thrift连接池的另一种实现

    对象池是一种很实用的技术,经典的例子就是数据库连接池.去年曾经从零开始写过一个thrift客户端连接池.如果不想重造轮子,可以直接在apache开源项目commons-pool的基础上开发. 步骤: ...

  6. druid连接池获取不到连接的一种情况

    数据源一开始配置: jdbc.initialSize=1jdbc.minIdle=1jdbc.maxActive=5 程序运行一段时间后,执行查询抛如下异常: exception=org.mybati ...

  7. C3P0连接池配置和实现详解

    一.配置 <c3p0-config> <default-config> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.Default: 3 --> ...

  8. hibernate+mysql的连接池配置

    1:连接池的必知概念    首先,我们还是老套的讲讲连接池的基本概念,概念理解清楚了,我们也知道后面是怎么回事了. 以前我们程序连接数据库的时候,每一次连接数据库都要一个连接,用完后再释放.如果频繁的 ...

  9. 连接池的实现 redis例子

    # -*- encoding:utf-8 -*- # import pymysql # # conn = pymysql.connect(host="127.0.0.1", por ...

随机推荐

  1. PV、UV、IP的区别

    网站推广需要一个网站访问统计工具,常用的统计工具有百度统计.51la.量子恒道统计等.网站访问量常用的指标为PV.UV.IP.那么什么是PV.UV和IP,PV.UV.IP的区别是什么? --首先来看看 ...

  2. c++面试(一)

    1.在c++中可以通过"::"来直接操作全局变量. 2.i++与++i效率的比较. (1)內建数据类型时,他们的效率差别不大. (2)自定义数据类型(类等)的情况,(++i)可以返 ...

  3. Qt Quick 与 QML语言(初学笔记1)

    Qt Quick Qt Quick是一些新的UI技术的集合,用来帮助开发者创建一种现在越来越多用于手机.多媒体播放器.机顶盒以及其他便携式设备上的直观的.现代的.流畅的用户界面.简单来说,Qt Qui ...

  4. jQuery慢慢啃之属性(三)

    1.attr(name|properties|key,value|fn)设置或返回被选元素的属性值. $("img").attr("src");//获取属性 $ ...

  5. phpcms(4) V9 栏目管理

    phpcms V9框架系统后台管理之栏目管理,请参见下文的源码分析(添加栏目和修改栏目): 参照添加栏目的界面图示,便于对源代码的理解: <?php   // 文件路径:phpcms/modul ...

  6. 在Lufylegend中如何设置bitmap或者sprite的缩放和旋转中心

    最近两天有个lufylegend游戏引擎群的群友需要做一个项目,其中要解决的需求是:获取照相机拍摄的图片,根据图片的EXIF信息让图片显示为“正常”情况,并且需要给图片添加一些事件侦听.何为正常呢?就 ...

  7. C# 跨线程访问控件

    this.BeginInvoke(new Action(() => { this.StatusProgressBar_ExecutingTaskStatus.Value = (int)value ...

  8. 使用php实现爬虫程序 套取网站的图片实例

    <?php //去采集a67 图片 网站链接 http://www.xiamov.com/list/1/p.2 你也可以采集其他网站的图片 //创建链接 dedecms--a67 //设置执行不 ...

  9. uboot总结:uboot配置和启动过程3(config.mk分析)

    说明:文件位置:在uboot的目录下,文件名为:config.mk.是一个makefile文件,以后会被主Makefile调用. 它的主要作用的是: (1)具体的设置交叉编译工具链接(主Makefil ...

  10. 应用Oracle(Linux中的安装)

    Linux中安装Oracle,不同于windows. Linux在安装时,要作些必要的分区配置,以便进行Oracle的安装: 同时需要创建专门的数据库用户和组,并配置环境变量. root登录 使用 r ...