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

car*_*pii 6 mysql sql innodb

我正在调整一个大型查询,并希望在之前和之后从相同的基线运行它,以进行比较.

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

正在缓存的是缓冲池中的innodb页面.有没有办法清除整个缓冲池,以便我可以比较来自同一起点的两个查询?

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

Rol*_*DBA 11

警告:以下内容仅适用于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;
Run Code Online (Sandbox Code Playgroud)

完成测试后,将它们设置回默认值:

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
Run Code Online (Sandbox Code Playgroud)

查看这些设置的定义