首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找Python和MySQL脚本中的性能瓶颈

问查找Python和MySQL脚本中的性能瓶颈
EN

Stack Overflow用户
提问于 2010-01-16 15:40:01
回答 3查看 823关注 0票数 2

我有一个脚本,它有一个重复大约15k次的主for循环。在此循环中,它查询本地MySQL数据库并在本地存储库上执行SVN更新。我将SVN存储库放在RAMdisk中,就像以前一样,大部分时间似乎都花在读/写磁盘上。

现在我有了一个运行速度基本相同的脚本,但该脚本的CPU利用率从未超过10%。

ProcessExplorer显示,mysqld几乎不占用任何CPU时间,也不会对磁盘进行大量读/写操作。

您将采取哪些步骤来找出瓶颈所在?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-16 16:03:41

在for循环中执行SQL查询15k次是每种语言的瓶颈。

有什么原因让你每次都要查询吗?如果在for循环之前执行一次查询,然后循环遍历结果集和SVN部分,您将看到速度显著提高。

但我怀疑你会得到更高的CPU使用率。原因是您不是在做计算,而是主要做IO。顺便说一句,您不能在mysqld cpu使用率中衡量这一点,因为它在实际代码中,而不是查询的复杂性,而是它们的计数和服务器引擎响应的延迟。因此,您将只看到非常短的、不昂贵的查询,尽管这些查询确实在时间上进行了总结。

票数 4
EN

Stack Overflow用户

发布于 2010-01-16 15:44:00

分析您的Python代码。这将向您显示每个函数/方法调用所需的时间。如果这就是查询MySQL数据库的方法调用,那么您就有了查找的线索。但它也可能是其他的东西。在任何情况下,分析都是解决此类问题的常用方法。

票数 1
EN

Stack Overflow用户

发布于 2010-01-16 19:16:13

可以说,“众所周知”,svn update在完成运行后等待了整整一秒,因此文件修改时间戳变成了“过去”(因为许多文件系统的时间戳粒度都不会小于一秒)。你可以通过谷歌搜索"svn sleep_for_timestamps“找到更多关于它的信息。

我没有任何明显的解决方案可以建议。如果这真的是性能关键型的,你可以选择: 1)不要像现在这样频繁更新,2)尝试使用较低级别的Subversion API (祝你好运)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2076582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档