一尘不染

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

mysql

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

我知道mysql查询缓存,但与我无关,因为无论如何都不会缓存2个查询。

正在缓冲的是缓冲池中的innodb页面。有没有一种方法可以清除整个缓冲池,以便可以从同一起点比较两个查询?

虽然在运行每个查询后重新启动mysql服务器无疑会工作,但我想尽可能避免这种情况


阅读 986

收藏
2020-05-17

共1个答案

一尘不染

警告:以下内容仅适用于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

查看这些设置的定义

2020-05-17