-1

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

我不确定脚本 A 会运行多长时间,这完全取决于负载。

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

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

有什么方法可以提高性能吗?

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

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

4

2 回答 2

2

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

基于什么证据?是否进行了任何跟踪/分析以尝试跟踪它?

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

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

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

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

于 2013-06-25T03:22:44.453 回答
0

您可以在脚本 B 中添加一个逻辑标志,而不执行 A,除非它完成了上一次运行。您可以在启动脚本 A 后激活该标志并在最后停用它。这将防止重叠和并行执行 A。

于 2013-06-25T12:29:48.173 回答