【发布时间】:2011-09-10 17:31:57
【问题描述】:
我有一些很少运行的报告查询,我需要在不依赖它们被缓存在系统中的任何位置的情况下保持高性能。在测试各种模式和存储过程更改时,我通常会看到第一次运行非常慢,随后运行很快,所以我知道有一些缓存正在进行,这使得测试更改变得很麻烦。重新启动 mysqld 或运行其他几个大型查询是重现它的唯一可靠方法。我想知道是否有更好的方法。
MySQL 查询缓存已关闭。
监控磁盘,除了第一次运行,我没有看到任何读取发生。我对磁盘缓存不是很熟悉,但我希望如果缓存发生在那里,我仍然会看到磁盘读取,它们会非常快。
MONyog 给了我我认为是权威的证据,那就是 InnoDB 缓存命中率。监控它,我发现当查询速度快时它会访问 InnoDB 缓冲区,当查询速度慢时它会访问磁盘。
在实时系统上,我很乐意让 InnoDB 执行此操作,但出于开发和测试目的,我对最坏的情况感兴趣。
我在 Windows Server 2008R2 上使用 MySQL 5.5
【问题讨论】:
标签: mysql performance