当前位置:  开发笔记 > 编程语言 > 正文

Mysql连接池问题:值得吗?

如何解决《Mysql连接池问题:值得吗?》经验,为你挑选了2个好方法。

我记得听说mysql中的连接过程与其他RDBMS相比设计得非常快,因此如果启用连接池,那么使用提供连接池(SQLAlchemy)的库实际上不会对您有太大帮助.

有人对这个有经验么?

我很乐意启用它,因为如果某些代码对数据库连接做了某些有状态的事情并且(可能是错误地)不会在自身之后进行清理,那么通常在关闭连接时将被清除的状态将改为传播到后续代码,获得循环连接.



1> zzzeek..:

使用SQLA的连接池时,无需担心连接上的剩余状态,除非您的应用程序正在更改连接范围的选项,如事务隔离级别(通常情况并非如此).签入时,SQLA的连接池在连接上发出connection.rollback(),以便清除任何事务状态或锁.

MySQL的连接时间可能非常快,特别是如果你在同一台机器上连接unix套接字.如果您确实使用了连接池,那么您还需要确保在一段时间后回收连接,因为MySQL的客户端库将自动关闭空闲时间超过8小时的连接(在SQLAlchemy中这是pool_recycle选项).

通过将池实现从默认的QueuePool更改为NullPool,您可以快速完成连接池与非SQLA应用程序的连接,NullPool是一个实际上不会集合任何内容的池实现 - 它连接和断开连接时为真实的获取代理连接,然后关闭.



2> Jon Skeet..:

即使MySQL本身的连接部分非常光滑,也可能存在涉及的网络连接(无论是环回还是物理连接).如果你提出了很多要求,那么这可能会非常昂贵.它取决于(通常情况下)你的应用程序究竟在做什么,当然 - 如果你在每个连接上做了很多工作,那么这将占主导地位并且你不会获得很多.

如果有疑问,那么基准测试 - 但我总体上相信连接池库(至少是一个有信誉的库)应该正常工作并适当地重置事物.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有