在一个多线程的python应用程序中,什么是减少mysql连接开销的正确方法?

v2g6jxz6  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(376)

这个问题在这里已经有答案了

python中数据库连接池的最佳解决方案是什么(8个答案)
两年前关门了。
我使用python的多处理包来设置工作线程来完成工作,并将结果更新到mysql数据库。什么是正确的设置方法,以便在每次初始化工作线程时都不会重新建立数据库连接?

jobtbby3

jobtbby31#

每个线程必须使用自己的独立连接。
mysql协议不是无状态的(比如http)。如果您尝试在多个线程之间使用一个mysql连接,服务器会对响应的请求感到困惑,而客户机线程会感到困惑,因为错误的线程可能会读取响应。
对于任何其他有状态协议(例如ftp)也是如此。
减少开销的更好方法是使用连接池。每个线程在线程的初始化中请求一个连接,池管理器为线程分配池中一个连接的独占使用权,直到线程处理完它为止。然后它将连接返回到池,在那里它将被分配给另一个请求连接的线程。
更好的方法是让线程请求一个连接,而不是在线程初始化时,而是在以后,当它实际需要做一些数据库工作时。然后在数据库工作完成后释放连接。如果从池请求连接的开销非常低,那么就没有理由在线程的生命周期内保持连接。
最好是分享!

相关问题