完美的查询我的sql超过5秒
问题描述:
最近我们看到一些在MySQL(主)日志中的查询,但不知道为什么他们在那里显示: 查询是select/update table where id = <some integer>
。完美的查询我的sql超过5秒
- 上有ID索引
- 表的大小是低于100个000
- 行扫描是在数百(有时< 100)
- 服务器上运行非常良好的硬件
- 有没有参与联合
- 我们没有看到当时在数据库上运行的任何大量活动
- 表是InnoDB的
- 相同的查询一般不会连取50毫秒,但有时这些查询的执行需要大约4-8秒
一个观察是所有类似的“非慢但是很奇怪的是,高时间“查询在一段时间内花费的时间几乎相同。即像顶部所述的查询全部花费大约4.35秒,变化0.05秒。
网络延迟/数据包丢失是否会影响mysql查询时间?
答
- 您是否在本地或通过网络看到这些问题?如果是后者,那么显然数据包丢失会影响你的性能,如果你是从客户端进行测量。
- 它是否在可影响性能的虚拟机中运行?
- 磁盘问题?
- 如何设置序列化?访问同一行的许多进程可能是争用问题吗?
- 您可能希望启用查询/慢速查询日志以查看是否有任何形式的原因导致此问题。
答
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查询时间? 是的,超时必须发生在客户端重新发送查询之前
如何在生产的代码中建立mysql连接?本地驱动程序或某种odbc?你是否试图直接在数据库上执行查询,或者只是在你的应用程序中执行查询? – Grrbrr404
你的id列的确切数据类型是什么? – Bohemian
仅供参考[lakh](http://en.wikipedia.org/wiki/Lakh)是'100K' – Bohemian