有多少人是凭感觉设置数据库连接池的?
| 数据库
评论 0 | 点赞 0 | 浏览 354

数据库连接池数量设置成多少合适?这可不能凭感觉设置。

经手过不少项目,发现很多项目的数据库连接池都是凭感觉设置的,设个100?设个50?感觉差不多就行。甚至有一些运维,在将项目部署到任何一台服务器,都不会去改动连接池参数,这是不对的。其实这个连接池数量是有讲究的。

首先我们要知道,线程多不代表快,单核cpu为什么能执行多线程?是因为单个cpu分出时间片给不同的线程,但是分时间片会带来上下文切换的消耗,线程越多,消耗自然也越多,大体是这么个道理。

当然,以上是未考虑磁盘、网络IO的情况,IO操作是很费时的,在等待IO的过程中,cpu可以将资源让出给其他线程、因此,可以让连接数比cpu核心数大一些。

那么,综合考虑cpu和磁盘、网络IO,到底设置连接数为多少才合适呢?PostgreSQL 提供了一个公式供你参考:

连接数 =核心数 * 2 + 有效磁盘数

举例:你的个人电脑是双核cpu的,那么连接池大小为2*2+1=5

这个数字可能和你设置的50、100等有很大出入,但各位可以模拟10000个线程并发操作数据库的场景试一试,就能得出结论。

这个公式仅仅作为参考,不能说就是最优的,还需要根据软件的业务场景、硬件的参数,具体分析。

本文作者:不是好驴
本文链接:https://www.baddonkey.cn/detail/17
版权声明:原创文章,允许转载,转载请注明出处

高谈阔论

留言列表