首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >现在,使用JDBC的连接池是否仍能提高性能?

现在,使用JDBC的连接池是否仍能提高性能?
EN

Stack Overflow用户
提问于 2011-07-01 02:43:52
回答 2查看 2.5K关注 0票数 4

我的应用程序没有使用任何形式的连接池,而是直接使用连接。该应用程序主要用于简短、简单的查询。从日志中我可以看到,它经常打开和关闭连接,通常只执行一行或几行之间的单个选择。这些通常需要100 the (包括打开和关闭连接)。

关于连接池如何提高应用程序性能,有无数的文章和博客条目,但它们似乎都相当古老(5年或更长时间)。

连接池是否仍然提供了合理的性能效益,或者已经过时了。我正在使用Microsofts驱动程序3.0版本的SQLServer 2008,如果这很重要的话。

结果/更新:自从我问了这个问题之后,发生了很多事情(我们切换JDBC驱动程序和其他很多东西)。有一段时间,我做了很多重构和其他事情,在那个时候,统一也给应用程序添加了连接池。通过连接池,现在执行一些查询的速度要快于日志时间戳粒度(我相信小于16 can )。

因此,总之,如果您需要频繁地连接/断开连接,是的连接池仍然是值得的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-01 03:01:30

如果每个查询100毫秒对你来说是可以的,那么你不需要一个连接池。如果您需要小于20 ms的查询,重用连接是必不可少的。

如果您的驱动程序支持它自己的连接池,我建议您使用它(以防它已经为您这样做了)。只有当您希望更好地控制连接如何池时,您才可以使用额外的库(我自己从来没有找到一个好的库)。

注意:您不需要使用池来重复使用连接。

重用连接的一种简单方法是拥有一个持久连接(该连接具有适当的线程安全防护措施),如果您的查询不频繁,这可能就是您所需要的。

如果希望能够并发执行查询,并且只有几个执行查询的线程,则可以将连接存储在ThreadLocal字段中。

如果您想要多个连接,并且有更多可以执行查询的线程,则使用一个池。

对于ThreadLocal模型,您可以这样做

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static final ThreadLocal<Connection> CONNECTION = new ThreadLocal<Connection>() {
     public Connection initialValue() {
         LOG.info(Thread.currentThread()+": created a connection.");
         return createConnection();
     }
};

如果您想控制连接的清理方式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private static final Map<Thread, Connection> connections = new ConcurrentHashMap();
public static final ThreadLocal<Connection> CONNECTION = new ThreadLocal<Connection>() {
     public Connection initialValue() {
         LOG.info(Thread.currentThread()+": created a connection.");
         Connection conn = createConnection();
         connections.put(Thread.currentThread(), conn);
         return conn;
     }
};
public static void cleanUp() {
     for(Map.Entry<Thread, Connection> entry: connections.entrySet()) {
         Thread t = entry.getKey();
         if (!t.isAlive()) {
             LOG.info(t+": closed a connection.");
             connections.remove(t);
             entry.getValue().close();
         }
     }
}

如果您关心的是获得一个死连接,您可以重写ThreadLocal的get()以在返回之前测试该连接。

票数 4
EN

Stack Overflow用户

发布于 2011-07-01 02:47:44

这在一定程度上取决于数据库软件。有些(例如MySQL)具有相对轻量级的连接,可以快速打开。其他的,如Oracle,有连接是很大的喇叭结构和严重的开销。

不过,一般来说,使用连接池是个好主意,特别是对于快速、短、大容量的查询。应用程序包含连接的速度越快,它就变得越重要。在过去的几年里,这种情况并没有改变--如果说有什么变化的话,那就是随着应用程序的扩展和变得更加复杂,它比以往任何时候都更重要。

如果你需要说服,我建议你做一些基准,与池和不。如果你在你的具体情况下没有得到任何性能上的好处,那么也许这不值得你去做。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6546911

复制
相关文章
php-fpm开启opcache缓存
比较奇怪的是今天的访问量到了500以下,想测试下是哪个地区无法访问,结果打开测速网站,网站直接挂了,所有地区全红,cpu内存跑满。于是想着优化下php的执行,开启代码缓存:
obaby
2023/03/27
2K0
php-fpm开启opcache缓存
lnmp 开启 Opcache 脚本缓存提高 php 性能
lnmp 开启 Opcache 脚本缓存可以提高 php 运行性能,进而提高整体服务器的运行效率。Opcache 是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件。今天魏艾斯博客尝试开启这个组件,并希望能够提高 php 性能,因为是第一次尝试,后面经过一段时间服务器运行后再来汇报结果。 为了提高 linux 服务器的运行速度和网站的打开速度,魏艾斯博客前期进行了各种尝试,从各种 wordpress 缓存插件开始折腾,后来发现各种 wordpress 缓存插件在博客流量低(1000IP)的时候,
魏艾斯博客www.vpsss.net
2018/07/04
9030
lnmp 开启 Opcache 脚本缓存提高 php 性能
lnmp 开启 Opcache 脚本缓存可以提高 php 运行性能,进而提高整体服务器的运行效率。Opcache 是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件。今天魏艾斯博客尝试开启这个组件,并希望能够提高 php 性能,因为是第一次尝试,后面经过一段时间服务器运行后再来汇报结果。
魏艾斯博客www.vpsss.net
2018/06/28
1.5K0
lnmp 开启 Opcache 脚本缓存提高 php 性能
PHP Opcache的工作原理
PHP项目中,尤其是在高并发大流量的场景中,如何提升PHP的响应时间,是一项十分重要的工作。
码农编程进阶笔记
2021/07/20
1.2K0
PHP Opcache的工作原理[通俗易懂]
PHP项目中,尤其是在高并发大流量的场景中,如何提升PHP的响应时间,是一项十分重要的工作。
全栈程序员站长
2022/07/11
9370
PHP Opcache的工作原理[通俗易懂]
PHP Opcache工作原理
在理解 OPCache 功能之前,我们有必要先理解PHP-FPM + Nginx 的工作机制,以及PHP脚本解释执行的机制。
猿哥
2019/11/10
1.5K0
PHP性能加速: OPcache
虽然是老生常谈,还是想在此记录一下。 之前在开发环境的服务器上也遇到过此问题,为何明明在服务器上已经修改了代码,但就是不生效!? 有可能就是因为开启了OPcache,线上环境为了加速PHP性能(线上开启此扩展是很有必要的),开启了此配置,然而在开发环境上代码时常发生修改,需要注意这个配置(开发环境甚至可以关闭),以避免发生上述问题。
lukachen
2023/10/22
3190
使用OPCache提升PHP的性能
对于 PHP 这样的解释型语言来说,每次的运行都会将所有的代码进行一次加载解析,这样一方面的好处是代码随时都可以进行热更新修改,因为我们不需要编译。但是这也会带来一个问题,那就是无法承载过大的访问量。毕竟每次加载解析再释放,都会增加 CPU 的负担,通常一台 8核16G 的服务器在2、3000并发左右 CPU 就能达到60%以上的使用率。而且如果你使用的是类似于 Laravel 这种大型的框架,效率将更加低下。这个时候,我们通常会通过增加服务器数量来做负载均衡,从而达到减轻服务器压力的效果。不过,这样做的成本又会增加许多。那么,有没有什么优化的方案呢?
硬核项目经理
2020/08/13
1.1K0
PHP - 性能优化 - 开启Opcache
对于PHP、Python属于解释型语言,不产生机器码,而是产生中间码(中间码是不能直接执行,这个中间码只有解释器可以识别到,中间码要靠解析器来进行执行) PHP的解析器是Zend,PHP使用Zend引擎,中间码我们也称作为操作码(opcode)
九霄道长
2021/03/02
1.4K0
PHP开启opcache提升代码性能
配置指令如下: [opcache] zend_extension=opcache.so opcache.enable_cli=1 ;共享内存大小, 这个根据你们的需求可调 opcache.memory_consumption=256 ;interned string的内存大小, 也可调 opcache.interned_strings_buffer=8 ;最大缓存的文件数目 opcache.max_accelerated_files=4000 ;60s检查一次文件更新 opcache.reval
luxixing
2019/05/30
8340
php7性能优化之opcache
最近业务有所增长,随之而来的是慢请求逐渐多了起来,在搜索php性能优化的过程中发现了opcache,相关的文章很多,但是都比较零碎,所以在此做个总结。公司当前使用的PHP版本为php7.x.x。
阿dai学长
2021/07/15
1.5K0
[笔记] 使用 opcache 优化生产环境PHP
OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。
码农编程进阶笔记
2021/07/20
8260
[笔记] 使用 opcache 优化生产环境 PHP
OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。
全栈程序员站长
2022/07/11
4210
php5.6安装Zend Opcache扩展
假设php5.6安装路径为/data2/php [root@nextcloud src]# pwd /usr/local/src [root@nextcloud src]# wget http://pecl.php.net/get/zendopcache-7.0.5.tgz [root@nextcloud src]# tar zxvf zendopcache-7.0.5.tgz [root@nextcloud src]# cd zendopcache-7.0.5 [root@nextcloud zendop
洗尽了浮华
2018/01/23
1.9K0
[精选] 面试PHP主管岗位的时候,问我PHP的opcache是用来干嘛的?
opcache从字面意思,肯定是缓存这一块的。但是你是否知道它的工作原理是怎样的呢?这里一点一点让你了解! PHP项目中,尤其是在高并发大流量的场景中,如何提升PHP的响应时间,是一项十分重要的工作。而Opcache又是优化PHP性能不可缺失的组件,尤其是应用了PHP框架的项目中,作用更是明显。 1. 概述在理解 OPCache 功能之前,我们有必要先理解PHP-FPM + Nginx 的工作机制,以及PHP脚本解释执行的机制。 1.1 PHP-FPM + Nginx
用户8568307
2022/03/14
9800
使用Redis和opcache扩展为网站加速教程
php在执行函数最消耗时间的就是查询SQL数据库了,一般来讲一个页面的数据库查询大概在120到260次左右,使用Redis或者Memcached缓存,原理就是将php查询过的数据库缓存下来,下一次相同内容就不再查询数据库了,直接从缓存获取,极大的提高php执行效率。
Hello-1
2022/08/30
6110
使用Redis和opcache扩展为网站加速教程
WordPress使用Redis和opcache为网站加速教程
相信建站的朋友都十分关心网站速度问题了,玖柒的小窝一直在强调极速优化这次词语,同时在之前的很多文章中我也简单的介绍了子比主题的关于速度优化的一些原理。理论上来讲使用子比主题搭配一个不是太差的服务器,那么就已经很快了,如果你想让你的网站变得更快,那么看了这篇文章,我相信完全够了。
玖柒的小窝
2021/10/22
2.6K0
WordPress使用Redis和opcache为网站加速教程
PHP安装配置Opcache加速你的网站
本文针对PHP5.5等高级版本,编译时需要加上--enable-opcache参数
老高的技术博客
2022/12/28
7070
PHP安装配置Opcache加速你的网站
点击加载更多

相似问题

OPcache不缓存任何内容

139

OpCache不缓存

21

php opcache缓存输出

14

Php Zend Opcache缓存包含文件

20

用opcache缓存PHP中的静态数据

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文