70. 现在来看一下连接池的概念,我们一个商业性的项目肯定要使用连接池的,他有什么作用,我们访问数据库的时候获取连接的时候是非常慢的,使用连接池的话,我先创建一些连接全放在连接池里面。事先放好,以后你要用的话,就直接拿。就省去了创建的时间。
71. 如果你使用了连接池的话,比如说你拿到连接调用方法添加了用户,一调用完不是把连接池关了,而是把连接池送回去。虽然也是conn.close()但是实际上没有关闭,而是把flag=true改成flag=false这么一改。现在不就是又可以用了嘛。
72. 连接池貌是这样的,比如下面有三个连接
conn1 张三进来了,拿这个连接,把这个连接拿走了,你这相当于有一个标记一样,flag=true,true表示被使用。
conn2 假设李四把这个拿走了,也是flag=true;
conn3 flag=false表示这个连接处于空闲状态。
73. 假设上面三个都被用了呢?这还得看你这个池的限制,假设我现在最多能放10个,那么现在第四个用户进来的话,那么 我马上创建一个conn.现在再来用户就一直往 上加,就再创一个直到第10个,假设第11个进来了,就等着呗,如果第11个一直等一直等,他就超时错误了,就像那个session一样。
74. 他可以设置一个最大的上限和一个最小的下限。
最小的下限:即一启动的时候最小创建多少个连接。
75. 其实你可以自己写一个连接池,你自己写的意义不大,这些成熟的东西有的是,我们以前也写过,很久以前了,01年,王勇说他们的一个同事写的,因为那时候刚开始接触java,也不太懂,他01年接触java的,
76. 他说他的同事写的有问题,用着用着2小时机器就得重启一下。这个问题其实很容易发生。
77. 特别是多个人做的时候,如果管理不好,什么事啊,连接没了,假设我现在给这个连接池30个连接,正常情况下30个连接已经很大了。你想30个人同时占用,你这个访问量得多大啊,同时 占30个,第31个来的时候,等的时候没有可能会出问题,
78. 我们那时出了什么问题呢?他这个连接池写得有毛病,也不是说连接池写得有毛病,就是说成员做开发,写的代码有问题,他那个偶尔就没有释放这个连接,你看啊,假设张三来使用conn1,张三操作了某个功能,这个功能写得有问题啊,他用完这连接就没释放,那这个连接就一直占着啊,其他人操作可能都释放了,偶尔张三又操作一下,又没有释放,那他又占一个,直到他把30个全占了,占满之后,第31个人再来,没了,没了机器就得重启啊,重启的话,这连接不就释放了吗?再重新来,这系统肯定不行是吧,这就属于内存泄漏了,
79. 所以说在大的项目里,这种资源都是我去释放的,就很容易出现问题,出现之后很难找,
80. 项目那么 大的话,你知道是点到什么地方出了什么问题吗?他是偶尔就不行了,偶尔就不行了,以前他在工作的时候也出现 过这种问题。
81. 我们用连接池主要用哪个啊,就用tomcat集成的那个dbcp ,连接池又用别的c3p0,以前我们还用过poolman 关于这个dbcp我们也说过,在说这个上传的时候。
82. 这个dbcp和oracle,mysql这些没有任何关系,他就负责创建连接,管理连接。
83. 在tomcat的common目录下,有一个dbcp.jar的包,位于common这个目录下,我们刚讲这个类加载机制,那个oracle driver放在Web App1下面,这个能产生连接,这个连接你得放到dbcp这个池里,
Common 连接池放在这
Shared
Web App1 oracle jdbc 放这
你现在产生的连接能放到上面的连接池里面去吗?放不了,跟类的加载机制有关,所以你要配置连接池,你必须把Web App1下面的相关驱动放到Common里面,让他们使用同一个加载器加载。
84. 他是这样说的,必须把Web App1下面的ojdbc驱动放到common里面,我好像没有这样做啊,
85. 关于这个连接池,怎么来配置呢?你其实可以通过修改tomcat的配置文件来配,但是我们来接触一下,tomcat的配置页面,用他的管理页面来配,他说这个管理页面需要重新下载,他本身不带,
mysql 连接池 清理
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
下一篇:python角度单位怎么打
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
连接池清理无效mysql链接 数据库连接池失效
一、 开发环境 测试平台:Linux 开发工具:Eclipse 3.x 搭配环境:Struts2.x / Ibatis 2.0 / MySql / Tomcat6.0二、 异常描述 &nbs
连接池清理无效mysql链接 mysql连接池失效 配置文件 MySQL 连接池 -
监控系统4 - LVGL | sqlite3 | mqtt
该模型旨在解耦消息的发送者(发布者)和接收者(订阅者),二者不直接通信,而是通过一个中间代理(Broker)进行消息路由。
#sqlite3 #linux #嵌入式实时数据库 sqlite linux -
【珍藏必备】揭秘Transformer架构:为什么LayerNorm比BatchNorm更适合NLP任务?深度解析大模型归一化技术
leNorm等变体以提升深层Transf
transformer 自然语言处理 大模型学习 AI大模型 人工智能
















