为什么在SQLAlchemy中要限制数据库连接池的大小?

15
这是关于SQLAlchemy中数据库连接池错误的问题,是我之前发布的问题的后续。
根据SQLAlchemy 文档sqlalchemy.pool.QueuePool.__init__()方法接受以下参数: pool_size - 要维护的池的大小,默认为5。这是将持久保存在池中的连接数上限。注意,池开始时没有连接;一旦请求了此连接数,就会保留该连接数。池大小可以设置为0表示不限制大小;要禁用连接池,请使用NullPool。
将pool_size设置为0有哪些缺点?限制连接池大小有什么好处?只是为了节省内存吗?数据库实际上并不关心大量未使用的连接是否打开,对吧?
1个回答

17

不限制连接池大小的主要缺点是潜在的运行程序可能创建过多的连接。

无论是在数据库层面还是操作系统层面都存在实际限制,以确定数据库支持的最大连接数。每个连接还会使用额外的内存。限制连接池大小有助于保护您的数据库免受程序错误或针对服务器的恶意攻击。这两种情况都可能通过使用过多的连接或内存将您的数据库服务器陷入停滞。

正常情况下,每个连接使用的额外内存不应该是太大的问题,但最好将其限制为您认为会同时使用的最大数量(也许再加上一些作为保险)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接