上一篇说到分析关闭连接与不关闭连接的性能,到后来我发现自己得出的结论有误。经过多次测试发现关闭连接和不关闭连接耗费的时间基本一样。进哥也说了这是有连接池的原因。其实,自己以前对Ado.net了解的不深,于是就到网上搜了下连接池。发现好多文章都差不多,现在网上文章到处转载啊。ASP.NET数据库连接池设置浅析就是一篇,话说里面关于连接池关闭的时间是这样描述的 2.何时关闭连接池?

当连接池中的所有连接都已经关闭时关闭连接池。

看了之后我也迷糊了,在我的程序中也没有其他的连接: public static voidInsertError() {

SqlConnectionconn = newSqlConnection(connString);

stringcmdtxt = "INSERT INTO [NcuhomeORG].[dbo].[SysErrorLogs]([ErrorLogID],[ErrorMsg] ,[ErrorUrl],[ErrorDatetime])VALUES (1,'hahah','fffff','2009-12-26 11:33:08')";

SqlCommandcmd = newSqlCommand(cmdtxt, conn);

conn.Open();

cmd.ExecuteNonQuery();

conn.Close();

}

上面程序一直在循环执行(如有不清楚可以查看上一盘文章),而且每次都关闭了连接,那岂不是每次都要创建连接池。

在我之前的测试中我发现,每次我重启电脑之后的第一次运行程序的时间一定比其他的时间长,我想在是这是创建连接池花费了很多时间。相比之下每次new SqlConnection(),并执行SQl操作所需的时间只要创建连接池的十分之一时间。

现在基本上确定了那篇文章关于连接池关闭的时间是错误的,于是我就在想连接池到底是在什么时候关闭的。也提出了些想法:

在所有连接关闭之后的一定时间内关闭;

应用程序关闭的时候关闭;

那么我也就开始测试了,我在每次执行过方法后让进程阻塞。5s,10s,20s,发现多没有明显的变化。纠结,我总不能去测试1h吧。就这样我暂时放弃了这个测试。

在应用程序结束的时候关闭,不就是关闭浏览器吗?简单,但是测试了好多次发现运行时间没有明显的差距。不是这个问题了。

最后还是到网上去找连接池关闭的时间,查看官方的文档吧:了解连接池。这篇文章里讲了连接池关闭的时间:

连接的移除

如果连接长时间空闲,或池进程检测到与服务器的连接已断开,连接池进程会将该连接从池中移除。请注意,只有在尝试与服务器进行通信后,才可以检测到这种情况。如果发现某连接不再连接到服务器,则会将其标记为无效。连接池管理程序会定期扫描连接池,查找已释放到池中并标记为无效的对象。找到后,这些连接将被永久移除。

如果存在一个与已消失的服务器的连接,如果连接池进程尚未检测到断开的连接并将连接标记为无效,可以从池中提取此连接。当发生这种情况时,将生成异常。但是,为了将该连接释放回池中,仍必须将其关闭。

连接池的问题算是解决了,我又有了问题,可这是概念理解的问题:

protected voidPage_Load(objectsender, EventArgse) {

Actionc = () => tests();

test.Profile(c, 15);

}

protected voidtests() {

SqlConnectionconn = newSqlConnection(ConfigurationManager.ConnectionStrings["NcuhomeORGConnectionString"].ConnectionString);

if(conn.State != ConnectionState.Open)

conn.Open();

else{

Response.Write("不用连接
");

}

}

最终页面一篇空白,我那时候是不明白啊。这里想到了,没有关闭的连接就一直占用着的,于是在new的时候肯定是一个新的连接了。也就是说每次new出来的SqlConnection的状态一定是关闭的。也就想到了上一篇文章的测试没有用啊,在连接之前判断反而是画蛇添足啊!

以上的内容是个人见解,如有任何意见或见解希望能提出来!

c mysql 关闭连接池_数据库连接池关闭的时间相关推荐

  1. gc问题mysql连接池_数据库连接池引起的FullGC问题,看我如何一步步排查、分析、解决...

    问题现象 在某个工作日,突然收到线上的服务告警,有大量的请求延时产生,查看线上服务发现基本上都是获取数据库连接超时,而且影响时间只有3~4秒钟,服务又恢复了正常.隔了几分钟之后,又出现了大量的告警,还 ...

  2. weblogic mysql 测试连接表_Weblogic数据库连接池配置

    以建立oracle数据源为例(此处以weblogic12c为例) 选择 域结构 >base_domain >服务>数据源 此处weblogic10版本选择 wl_server > ...

  3. c3p0 mysql 连接池配置文件_数据库连接池c3p0的使用

    原标题:数据库连接池c3p0的使用 来源:java联盟 https://mp.weixin.qq.com/s/5Tbkf8dVFfH8AvtqWl-7Xg 程序员共读整理发布,转载请联系作者获得授权 ...

  4. 连接池,数据库连接池

    连接池 连接池是什么? 连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用. 连接池的优点 减少连接创建时间 简化的编程模式 受控的资源使用 注:连接池能够使性能最大化, ...

  5. mysql事务锁导致tomcat崩溃_数据库连接池连接耗尽,导致tomcat请求无响应,呈现出假死状态...

    最困难的事情就是认识自己! 个人网站 ,欢迎访问! 前言:最近,测试部门的同事找到我,说他们测试时,没一会就发现服务接口请求一直无响应,Tomcat跟死掉了一样,也没有返回任何的错误响应,说让我赶紧排 ...

  6. oracle mysql连接池配置文件_数据库连接池两种配置方式详解

    数据库连接池: 负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接 ...

  7. mysql连接池和最大连接数_数据库连接池和mysql的最大连接数的区别

    什么叫做数据库连接池 连接池的作用是什么? 数据库连接池,简称dbcp database connection pool 存在意义: 数据库的连接是非常耗费系统资源的,一个应用通常都是需要与数据库打交 ...

  8. mysql连接池的原理_数据库连接池的实现及原理

    对于一个简单的数据库应用,由于对于数据库的访问不是很频繁.这时可以简单地在需要访问数据库时,就新创建一个连接,用完后就关闭它,这样做也不会带来什么明显的性能上的开销.但是对于一个复杂的数据库应用,情况 ...

  9. jndi mysql数据库_数据库连接池技术中dbcp、c3p0、jndi

    数据库连接池技术中dbcp.c3p0.jndi 发布时间:2020-05-26 08:52:33 来源:51CTO 阅读:371 作者:ikilun 不管通过何种持久化技术,都必须通过数据连接访问数据 ...

最新文章

  1. 参加维基链超级节点竞选有什么好处呢?
  2. python自学网址-关于python学习,最系统的学习网站看这里
  3. java语言中解释方式是什么意思,Java语言快速入门·简答T
  4. 【网络安全】代码审计-zzcms2021前台写shell?
  5. 重载赋值运算符含动态申请
  6. 卖票案例 多线程 java 1615387415
  7. php显示图片缩略图,使用ThinkPHP生成缩略图及显示的方法
  8. Android大图片裁剪解决方案
  9. SpringBoot+Swagger整合API
  10. hdu1059Dividing
  11. 2、http网络编程——libcurl的使用
  12. Spring源码阅读 —— 一文看懂AOP的流程
  13. 全体离职员工致某IT老板的一封公开信
  14. 英语学术论文简短语句摘抄
  15. 用python处理文本数据(5)
  16. Speedoffice(word)如何添加超链接
  17. MUI前端代码生成快捷键
  18. CENTOS 7 YUM 安装PHP7.4
  19. 【单片机仿真】(十七)控制转移类指令 — 调用及返回指令
  20. 牛客算法課 (算法入門班) 貪心與模擬(4)

热门文章

  1. 移动web开发都会遇到的坑(会持续更新)
  2. junit 案例(三)
  3. linux 一些简记
  4. pku1548 Robots
  5. 【PM模块】维护处理简介
  6. ABAP X类型 和 xstring类型
  7. 网转 mm IOS 报表
  8. SAP系统中的银行主数据FI12
  9. 为什么精准营销难谈精准?
  10. CALL TRANSACTION 小节