完美的查询我的sql超过5秒

问题描述:

最近我们看到一些在MySQL(主)日志中的查询,但不知道为什么他们在那里显示: 查询是select/update table where id = <some integer>完美的查询我的sql超过5秒


  1. 上有ID索引
  2. 表的大小是低于100个000
  3. 行扫描是在数百(有时< 100)
  4. 服务器上运行非常良好的硬件
  5. 有没有参与联合
  6. 我们没有看到当时在数据库上运行的任何大量活动
  7. 表是InnoDB的
  8. 相同的查询一般不会连取50毫秒,但有时这些查询的执行需要大约4-8秒

一个观察是所有类似的“非慢但是很奇怪的是,高时间“查询在一段时间内花费的时间几乎相同。即像顶部所述的查询全部花费大约4.35秒,变化0.05秒。

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

+0

如何在生产的代码中建立mysql连接?本地驱动程序或某种odbc?你是否试图直接在数据库上执行查询,或者只是在你的应用程序中执行查询? – Grrbrr404

+0

你的id列的确切数据类型是什么? – Bohemian

+1

仅供参考[lakh](http://en.wikipedia.org/wiki/Lakh)是'100K' – Bohemian

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

Mysql慢日志不是有代表性的来源来了解您的慢查询。如果某事使服务器工作变慢,则所有查询通常都会导致日志变慢

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

您需要搜索其他慢速查询或服务器问题。这台特定机器的平均负载如何?是不是mysql被移入交换内存?其他应用?每秒查询?

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

是否备份了什么?它是否在队列中等待?等待文件句柄?什么是你的max_connections,open-files-limit,thread_concurrency?

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