Mysql 连接池

Posted 一天不进步,就是退步!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql 连接池相关的知识,希望对你有一定的参考价值。

通常,如果我们的服务涉及到mysql的操作,当一个新的请求进来的时候,可以先连接mysql, 使用完之后再断开连接即可。



但这样做有个弊端,当请求量巨大时,会在瞬间有大量的数据库连接与断开操作,这是非常影响 mysql 性能的做法。此时,我们就需要使用Mysql连接池。

在 Python 服务中使用 Mysql 连接池

1、建立连接池,sqllib.py

import pymysql
from DBUtils.PooledDB import PooledDB

import Config

class MysqlPool():
    __pool = None
    def __init__(self):
        self.conns = self.getPools()

    def getPools(self):
        __pool = PooledDB(
            creator=pymysql,
            mincached=1,
            maxcached=20,
            host=Config.host,
            user=Config.user,
            passwd=Config.password,
            db=Config.dbname,
            port=Config.port,
            charset=Config.charset
        )
        return __pool
        
  • mincached: 最小空闲连接数
  • maxcached: 最大空闲连接数
  • maxconnections: 最大允许连接数


2、使用连接池,server.py

from sqllib import MysqlPool

pool = MysqlPool()

@app.route(‘/test‘, method=[‘POST‘])
def test():
    db = pool.conns.connection()
    processing()
    db.close()
  • db = pool.conns.connection()

    从连接池中获取一个连接
  • db.close()

    连接使用完毕,将连接放回连接池。

以上是关于Mysql 连接池的主要内容,如果未能解决你的问题,请参考以下文章

mysql连接池实现

MySQL 和 JDBC 连接池:未关闭的语句

MySQL与Redis数据库连接池介绍(图示+源码+代码演示)

MySQL与Redis数据库连接池介绍(图示+源码+代码演示)

MySQL与Redis数据库连接池介绍(图示+源码+代码演示)

MySQL与Redis数据库连接池介绍(图示+源码+代码演示)