在python中存储数据库连接?

时间:2013-06-25 03:19:39

标签: python mysql database postgresql database-performance

我有一个脚本A(python脚本),它打开数据库并执行一些查询,然后关闭数据库连接。

我不确定脚本A运行多长时间取决于负载。

我有一个其他脚本B(shell脚本),它在while循环中运行脚本A.这意味着脚本A将始终运行。

我的数据库几乎占用了100%或更多的CPU。我认为这是因为反复打开和关闭连接。

有没有办法改善表现?

我正在使用MYSQL数据库,计划转移到PostgreSQL。

我想将连接存储在某个地方,如果它处于活动状态或创建一个新连接,则使用相同的连接。我不知道怎么做?有什么想法吗?

2 个答案:

答案 0 :(得分:2)

  

我认为是因为反复打开和关闭连接。

基于什么证据?完成任何跟踪/分析以尝试跟踪它?

所有Python解释器启动也无济于事。总的来说,这一切听起来都非常低效。

我个人建议摆脱shell脚本包装;在同一个Python脚本中执行此操作。在外部循环中连接一次,并在每次内部迭代中重复使用相同的连接。

您无法“保存”连接。当脚本终止时,连接将关闭。

您可以使用像PgBouncer这样的连接池来减少创建和销毁所有这些连接的开销,但它不会像在单个脚本中执行所有操作一样好。

答案 1 :(得分:0)

您可以在脚本B中添加逻辑标志,除非已完成上一次运行,否则不执行A.您可以在启动脚本A后激活该标志,并在结束时将其停用。这将防止重叠并且并行执行A.