在python中理解DB连接池

2024-05-11 07:47:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我不确定我是否理解数据库连接池的用例(例如:psycopg2.pool和mysql.connector.pooling)在python中。在我看来,在python中,并行性通常是使用多进程而不是多线程方法来实现的,因为GIL的存在,在多进程的情况下,这些池并不是很有用,因为每个进程都会初始化自己的池,一次只运行一个线程。这是对的吗?当使用多个进程时,是否有共享数据库连接池的策略,如果没有,池的用处是否仅限于多线程python应用程序,或者是否有其他场景可以使用它们?在


Tags: 方法数据库connector进程mysql情况用例线程
1条回答
网友
1楼 · 发布于 2024-05-11 07:47:37

基思

你在正确的轨道上。正如S.O的帖子“Accessing a MySQL connection pool from Python multiprocessing”中提到的:

Making a seperate pool for each process is redundant and opens up way
too many connections.

查看另一篇S.O文章,“What is the best solution for database connection pooling in python?”,它包含了一个python中的示例池解决方案。这篇文章还讨论了如果您的应用程序变为多线程的话,数据库池的局限性:

^{pr2}$

关于在python中实现db pooling,如“Application vs Database Resident Connection Pool”中所述,如果您的数据库支持它,最好的实现将包括:

Let connection pool be maintained and managed by database itself 
(example: Oracle's DRCP) and calling modules just ask connections from the connection 
broker described by Oracle DRCP.

如果你有任何问题,请告诉我!在

相关问题 更多 >