我有一个查询在开发机器上运行需要 600 毫秒,但在生产机器上需要 62 秒才能执行。但是当我再次在生产机器上重新执行这个查询时,它需要 700 毫秒。所以有一件奇怪的事情让查询有时需要时间。是发送数据或 IO 问题或加载问题。我正在使用 Mysql 和 UNIX Opensuse。我需要一个工具来捕获这个问题或者如果有人知道如何捕获它或者它发生在他之前.10x
最佳答案
缓存可以解释为什么第一次运行查询需要 62 秒然后第二次运行需要 700 毫秒。
如果您想在查询运行时查看 mysql 在做什么,请尝试运行 FLUSH QUERY CACHE 或 FLUSH TABLES 来清除缓存,然后运行查询,并在单独的 session 中运行“show processlist”几次您的查询正在运行。 “状态”将向您展示 MySQL 正在做什么。
您还可以使用“EXPLAIN”来分析您的查询。在 google 上快速搜索“mysql explain”会出现许多网站,解释“EXPLAIN”的作用以及如何使用它来优化您的查询或索引。如果在那之后您仍然遇到问题,请在此处发布带有索引定义的相关表定义、您的查询和 EXPLAIN 的输出。
至于开发环境和生产环境之间的性能差异...您的两个环境有什么不同吗?也许不同的 mysql 配置或系统配置?
关于MySQL发送数据性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8093234/