我想知道是否有人对我的情况有建议:如何从许多小查询中找到较慢的MySQL查询
我有一个运行数万个查询的进程。整个过程需要5到10分钟。我想知道哪些查询的运行速度比其他查询慢,但我知道它们中的任何一个都不会超过5秒(具有很多查询,这在我的日志中会非常明显)。我应该如何找出哪些花费最多的时间,并且如果优化了,会提供最好的结果?
更多细节:
我的查询运行单线程和同步的,我会说70%SELECT和30%的INSERT/UPDATE。我不得不把它们合并起来,并确定是否可以将工作分解成可以同时运行的不同单元 - 我不确定...
所有查询都是简单的INSERT语句,属性UPDATE语句或SELECT语句,主键或外键或双字段ANDed限制。
说明这一问题的:
我正在做什么基本上复制复杂的有向图结构,其全部内容。节点是数据库条目,邻接表示基本上是外键,但不是严格地说(它们可以是两个字段的组合,其中第一个表示第二个是什么表)。
你如何衡量“较慢”?已用时间?也许一个稍长的查询只会经常发生1/10。或者做了10倍的工作。也许查询需要15秒。但不会阻止任何其他查询。您的处理时间是cpu-bound还是I/O bound或磁盘访问限制?您的交易是单线程的,但可能是多线程的?什么样的锁定发生,如果有的话? – dkretz
查看更新描述 –