我正在优化一个大型查询,并希望在比较之前和之后从同一基准运行它。
我知道mysql查询缓存,但与我无关,因为无论如何都不会缓存2个查询。
正在缓冲的是缓冲池中的innodb页面。有没有一种方法可以清除整个缓冲池,以便可以从同一起点比较两个查询?
虽然在运行每个查询后重新启动mysql服务器无疑会工作,但我想尽可能避免这种情况
警告:以下内容仅适用于MySQL 5.5和MySQL 5.1.41+(InnoDB插件)
使用以下设置在InnoDB缓冲池中输入条目的持续时间:
SET GLOBAL innodb_old_blocks_time=250; // This is 0.25 seconds SET GLOBAL innodb_old_blocks_pct=5; SET GLOBAL innodb_max_dirty_pages_pct=0;
完成测试后,将它们设置回默认值:
SET GLOBAL innodb_old_blocks_time=0; SET GLOBAL innodb_old_blocks_pct=37; SET GLOBAL innodb_max_dirty_pages_pct=90; // 75 for MySQL 5.5/MySQL 5.1 InnoDB Plugin
查看这些设置的定义