为什么要限制SQLAlchemy中的DB连接池大小?

时间:2016-07-22 19:44:07

标签: python database sqlalchemy

这是我之前发布的关于SQLAlchemy中数据库连接池错误的question的后续内容。

根据SQLAlchemy docssqlalchemy.pool.QueuePool.__init__()方法采用以下参数:

  

pool_size - 要维护的池的大小,默认为5.这   是将持续保留的最大连接数   游泳池。请注意,池开始时没有连接;一旦这个   请求连接数,该连接数将   依然存在。 pool_size可以设置为0表示没有大小限制;至   禁用池,改为使用NullPool。

设置pool_size = 0有什么缺点?限制连接池大小有什么好处?它只是为了节省内存吗?如果大量未使用的连接打开,数据库应该不在乎,对吗?

1 个答案:

答案 0 :(得分:8)

不限制池大小的主要缺点是失控程序可能会创建太多连接。

数据库级别和O / S级别对数据库将支持的连接数有实际限制。每个连接也将使用额外的内存。限制池大小有助于保护数据库免受程序中的错误或服务器的恶意攻击。其中任何一个都可能通过使用太多连接或太多内存使数据库服务器停止运行。

正常情况下,每个连接使用的额外内存不应该是一个太大的问题,但最好将其限制为您认为的最大数量&# 39; ll同时使用(可能加上一些用于好的测量)。