【发布时间】:2011-02-14 21:55:18
【问题描述】:
我正在尝试设置一个脚本来测试开发 mysql 服务器上的查询性能。以下是更多详细信息:
- 我有 root 访问权限
- 我是唯一访问服务器的用户
- 最感兴趣的是 InnoDB 性能
- 我正在优化的查询主要是搜索查询 (
SELECT ... LIKE '%xy%')
我想做的是创建可靠的测试环境来测量单个查询的速度,而不依赖于其他变量。
到目前为止,我一直在使用 SQL_NO_CACHE,但有时此类测试的结果也会显示缓存行为 - 第一次运行需要更长的时间执行,而后续运行需要更少的时间。
如果有人能详细解释这种行为,我可能会坚持使用SQL_NO_CACHE;我确实相信这可能是由于文件系统缓存和/或用于执行查询的索引缓存,正如this 帖子所解释的那样。我不清楚 Buffer Pool 和 Key Buffer 何时失效或它们如何干扰测试。
那么,除了重新启动 mysql 服务器之外,您建议如何设置一个可靠的环境来确定一个查询是否比另一个查询执行得更好?
【问题讨论】:
-
没有任何测试我可以告诉你
LIKE '%xy%'的性能很糟糕。要判断一个查询是否比另一个执行得更好,最好使用 EXPLAIN -
是的,我知道这种查询需要做很多比较。问题是查询更复杂,我通常能够以多种方式重写它——每种方式的执行方式不同。我的目标是可靠地衡量性能差异。 (EXPLAIN 是一个很好的建议,我确实使用了它,但除此之外,我还想衡量“真实”的表现)。
标签: performance testing mysql