我有一个脚本A(python脚本),它打开数据库并执行一些查询,然后关闭数据库连接。
我不确定脚本A运行多长时间取决于负载。
我有一个其他脚本B(shell脚本),它在while循环中运行脚本A.这意味着脚本A将始终运行。
我的数据库几乎占用了100%或更多的CPU。我认为这是因为反复打开和关闭连接。
有没有办法改善表现?
我正在使用MYSQL数据库,计划转移到PostgreSQL。
我想将连接存储在某个地方,如果它处于活动状态或创建一个新连接,则使用相同的连接。我不知道怎么做?有什么想法吗?
答案 0 :(得分:2)
我认为是因为反复打开和关闭连接。
基于什么证据?完成任何跟踪/分析以尝试跟踪它?
所有Python解释器启动也无济于事。总的来说,这一切听起来都非常低效。
我个人建议摆脱shell脚本包装;在同一个Python脚本中执行此操作。在外部循环中连接一次,并在每次内部迭代中重复使用相同的连接。
您无法“保存”连接。当脚本终止时,连接将关闭。
您可以使用像PgBouncer这样的连接池来减少创建和销毁所有这些连接的开销,但它不会像在单个脚本中执行所有操作一样好。
答案 1 :(得分:0)
您可以在脚本B中添加逻辑标志,除非已完成上一次运行,否则不执行A.您可以在启动脚本A后激活该标志,并在结束时将其停用。这将防止重叠并且并行执行A.