Mysql--基础知识点--103--连接池

张开发
2026/4/19 20:51:13 15 分钟阅读

分享文章

Mysql--基础知识点--103--连接池
数据库连接池(Connection Pool)Connection Pool翻译过来的意思就是连接池那为什么需要有这个东西呢因为前面聊到过所有的客户端连接都需要一条线程去维护而线程资源无论在哪里都属于宝贵资源因此不可能无限量创建所以这里的连接池就相当于Tomcat中的线程池主要是为了复用线程、管理线程以及限制最大连接数的。连接池的最大线程数可以通过参数max-connections来控制如果到来的客户端连接超出该值时新到来的连接都会被拒绝关于最大连接数的一些命令主要有两条show variables like ‘%max_connections%’;查询目前DB的最大连接数。set GLOBAL max_connections 200;修改数据库的最大连接数为指定值。对于不同的机器配置可以适当的调整连接池的最大连接数大小以此可以在一定程度上提升数据库的性能。除了可以查询最大连接数外MySQL本身还会对客户端的连接数进行统计对于这点可以通过命令show status like “Threads%”;查询其中各个字段的释义如下Threads_cached目前空闲的数据库连接数。Threads_connected当前数据库存活的数据库连接数。Threads_createdMySQL-Server运行至今累计创建的连接数。Threads_running目前正在执行的数据库连接数。对于几个字段很容易理解额外要说明的一点是Threads_cached这个字段从名称上来看似乎跟缓存有关系其实也没错因为这里是有一个数据库内部的优化机制。当一个客户端连接断开后对于数据库连接却不会立马销毁而是会先放入到一个缓存连接池当中。这样就能在下次新连接到来时省去了创建线程、分配栈空间等一系列动作但这个值不会是无限大的一般都在32左右。连接池的优化思想与Java线程池相同会将数据库创建出的连接对象放入到一个池中一旦出现新的访问请求会复用这些连接一方面提升了性能第二方面还节省了一定程度上的资源开销。

更多文章