如何清除/刷新mysql innodb缓冲池?

我正在优化一个大型查询,并希望在比较之前和之后从同一基准运行它。

我知道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

查看这些设置的定义

  • MySQL 5.5

  • MySQL 5.1.41+

以上是 如何清除/刷新mysql innodb缓冲池? 的全部内容, 来源链接: utcz.com/qa/431088.html

回到顶部