我最近发现了一个自动创建的指定“Pooling=False”的连接字符串,并且想知道为什么要这样设置它。根据我的理解,只要不是完全错误配置,池化实际上总是有利的。
是否有任何禁用池化的原因?它取决于操作系统、物理连接或使用的 DBMS 吗?
最佳答案
是的,禁用池是有原因的。您需要检查特定的池库如何处理临时网络断开连接。例如,如果连接丢失但连接对象仍处于事件状态,某些数据库驱动程序和/或池库将不执行任何操作。池不会重新生成新连接,而是会给你陈旧的连接,你会得到错误。一些池实现通过在为应用程序提供连接之前向服务器发出一些快速命令来检查连接是否有效。如果他们遇到错误,他们会终止该连接并产生一个新连接。在启用池之前,您始终需要针对这种情况测试您的池库。
关于database - 不使用数据库连接池的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5194151/