对我的sql完全好的查询耗时超过5秒

时间:2011-11-23 09:02:36

标签: mysql performance

最近我们在mysql(主)日志中看到了一些查询,但不知道为什么会在那里显示它们: 查询为select/update table where id = <some integer>


  1. id
  2. 上有索引
  3. 表格大小低于100 000
  4. 扫描的行数百(有时<100)
  5. 服务器运行在非常好的硬件上
  6. 没有涉及联接
  7. 我们当时没有看到任何重型活动在数据库上运行
  8. 表格是innodb
  9. 相同的查询通常甚至不需要50ms,但有时所有执行这些查询大约需要4-8秒
  10. 有一个观察结果是所有相似的“非慢但奇怪的拍摄高时间”查询在一段时间内花费的时间几乎相同。即如上所述的查询将花费大约4.35秒,变化为0.05秒。

    网络延迟/数据包丢失会影响mysql查询时间吗?

3 个答案:

答案 0 :(得分:1)

show processlist;
show global status like '%onnect%';
show global status like '%open%';

有什么备份吗?它在排队等候吗?等待文件句柄?你有什么max_connections,open-files-limit,thread_concurrency?

一方面的问题:网络延迟/数据包丢失会影响mysql查询时间吗? 是的,超时必须在客户端重新发送查询之前发生

答案 1 :(得分:0)

  • 您是在本地还是在网络上看到这些问题?如果是后者,那么如果您从客户端进行测量,那么显然数据包丢失会影响您的性能。
  • 它是否在可影响性能的虚拟机中运行?
  • 磁盘问题?
  • 如何设置序列化?访问同一行的许多进程是否会成为争用问题?
  • 您可能希望启用查询/慢查询日志,以查看是否存在导致此问题的任何类型的模式。

答案 2 :(得分:0)

Mysql慢速日志不是代表性的来源,可以了解您的慢查询。如果某些东西使服务器工作变慢,所有查询通常都会慢速登录。

E.g。如果你在MyISAM上有一些缓慢的阻塞选择,那么很多PK更新将会减慢日志。

您需要搜索其他慢速查询或服务器问题。这台特定机器的平均负载怎么样?是不是mysql被置换为交换内存?其他应用?每秒查询次数?