【问题标题】:Perfectly good queries on my sql taking more than 5 seconds我的 sql 上的完美查询耗时超过 5 秒
【发布时间】:2011-11-23 09:02:36
【问题描述】:

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


  1. id 上有索引
  2. 表大小低于 100 000
  3. 扫描的行数为数百(有时
  4. 服务器在非常好的硬件上运行
  5. 不涉及任何联接
  6. 我们当时没有看到数据库上有任何繁重的活动
  7. 表是 innodb
  8. 相同的查询通常甚至不需要 50 毫秒,但有时这些查询的所有执行大约需要 4-8 秒

一个观察结果是所有类似的“非缓慢但奇怪地占用高时间”的查询在一段时间内花费几乎相同的时间。 IE。顶部所述的查询都需要大约 4.35 秒,变化为 0.05 秒。

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

【问题讨论】:

  • 如何在生产代码中建立 mysql 连接?本机驱动程序或某种 odbc?您是否尝试过直接在数据库上执行查询或仅使用您的应用程序执行查询?
  • 您的 id 列的确切数据类型是什么?
  • 仅供参考 lakh100K

标签: mysql performance


【解决方案1】:
show processlist;
show global status like '%onnect%';
show global status like '%open%';

有备份吗?是在排队等候吗?等待文件句柄?你的 max_connections、open-files-limit、thread_concurrency 是多少?

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

【讨论】:

    【解决方案2】:
    • 您是在本地还是通过网络发现这些问题?如果是后者,那么如果您从客户端进行测量,那么显然丢包会影响您的性能。
    • 它是否在会影响性能的虚拟机中运行?
    • 磁盘问题?
    • 如何设置序列化?会不会是多个进程访问同一行的争用问题?
    • 您可能希望启用查询/慢查询日志以查看是否有任何类型的模式导致此问题。

    【讨论】:

      【解决方案3】:

      Mysql 慢日志不是了解您的慢查询的代表性来源。如果某些事情使服务器工作缓慢,所有查询通常都会进入慢日志。

      例如如果您在 MyISAM 上有一些缓慢的阻塞选择,很多 PK 更新将进入慢速日志。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-07
        • 1970-01-01
        • 1970-01-01
        • 2023-02-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多