如何禁用MySQL服务器中的所有cachingtypes,以便为我的查询执行性能testing

我正在使用MySQL服务器5.6.15,我有一个庞大的数据库与许多复杂的查询。

看来,当我第一次运行查询需要X时间。

当我再次执行它时,X时间less了。 这意味着某些东西被caching了。

我希望能够性能testing我的查询,以提高他们的caching。

有没有办法在MySQL中禁用所有的cachingtypes,以便我正确地testing我的查询的执行时间?

任何有关这个问题的信息将不胜感激。

你真正想要的是查询caching未命中接近100%。 我想我有什么期待。 2011年7月9日,我在“DBA StackExchange: testing查询速度”中回答了这个问题。

这是答案:

您可能希望强加一个压力testing环境以使查询结果尽可能实时。 例如, 默认情况下MyISAM密钥缓冲区(由key_buffer_size控制的大小)为8MB,最小值为8(正确的是8个字节) 。 它负责保存来自.MYI文件的索引页面。 将此值设置为8,MyISAM中的每个键控查找都必须反复读取。

这也可以和InnoDB一起工作。 InnoDB缓冲池大小(由innodb_buffer_pool_sizepipe理)默认为128MB,最小为1MB(在MySQL 5.5中) 。 它负责保存来自.ibd和/或ibdata1文件的数据和索引页面。 将此值设置为1M,InnoDB中的每个键控查找(总是在聚簇行索引( gen_clust_index )中包含附加查找)必须反复读取。

为了增加压力, 将query_cache_type设置为0以强制查询不被caching

只需将这三(3)个最小值添加到/etc/my.cnf即可

[mysqld] innodb_buffer_pool_size=1M key_buffer_size=8 query_cache_type=0 

并重新启动MySQL。

这样做应该使所有的查询每次都能以最低的最低(或最差)执行。

试一试 !!!

那么,别坐在那里盯着显示器…

试一试 !!!