我们先来了解一下什么是连接池,池的概念
一、连接池
其实池的概念很好理解,顾名思义,池就是一个池塘,里面放了很多条已经创建好了的连接,这几条连接是有寿命的,在这几条连接池存活的时候,你可以随意使用其中的任意一条,在使用完之后,也不会关闭这条连接,而是会继续放到池中,供下一次调用使用。
池里面的连接数在创建池的时候已经定义好了的,假设为N个连接数。所以如果一旦有多于这个连接数的调用,则第N+1 开始会等待前面的调用完释放连接到连接池才会继续调用。
注意,这里的池是放在内存里的,所以也不是连接数越多越好,白白浪费了资源。太小则起不到池的概念。
有的同学会问,那我想用的时候再创建一条不可以吗,用完就直接回收掉。这样不是更加方便吗?
好问题,所以连接池的有啥好的?
1、数据库 本身有压力,并不能创建太多的并发数访问数据库,如果是大表那更加会有压力,因此限制一定的连接是更加科学的方法。
2、创建和释放数据库连接是一个很耗时的操作,频繁地进行这样的操作将占用大量的性能开销,进而响应速度下降,严重的时候可能导致服务器崩溃,数据库连接池可以节省系统许多开销。
综上所述,可以使用连接池当然最好是使用连接池了。
下面看看怎么实际使用连接池。
二、PooledDB 简单使用
import MySQLdb
from DBUtils.PooledDB i