当前位置: 首页 > 面试题库 >

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

孙海
2023-03-14
问题内容

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

我知道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
    • innodb_old_blocks_time
    • innodb_old_blocks_pct
    • innodb_max_dirty_pages_pct
  • MySQL 5.1.41+
    • innodb_old_blocks_time
    • innodb_old_blocks_pct
    • innodb_max_dirty_pages_pct


 类似资料:
  • 问题内容: 在log4j中,当使用具有BufferedIO = true和BufferSize = xxx属性(即启用了缓冲)的FileAppender时,我希望能够在正常关闭过程中刷新日志。有关如何执行此操作的任何想法? 问题答案:

  • 问题内容: 我有这样的事情: 如何清除缓冲区? 编辑:我尝试了以下方法,但由于某些原因它不起作用: 问题答案: 您无法明确清除扫描仪的缓冲区。在内部,它可能会在读取令牌后清除缓冲区,但这是porgrammers无法实现的实现细节。

  • 问题内容: 有人可以保存这两个文件并运行它们,然后告诉我为什么我得到错误“ ob_flush()[ref.outcontrol]:无法刷新缓冲区。没有要刷新的缓冲区”。我尝试了四处搜寻,并说必须使用ob_start();。但是,当我这样做时,它不会逐行打印出来,而是在完成后从FOR循环返回整个对象。我对PHP有点陌生,所以我不确定其他地方。 test_process.php main.html 问

  • 我使用Drupal 7最新的开发版本。 我已经安装了清漆和过期模块并设置它们。它们工作得很好,但是我有一个关于从清漆中删除缓存的问题。 问题是如何只删除索引(主页)页面的清漆缓存,而不删除其他页面的缓存。我看了清漆日志,发现每次Drupal执行命令时,整个清漆缓存都被删除了 此命令由varnish模块或expire模块执行,它表示删除主页(索引)页的缓存。但正如我看到的,它正在删除varnish中

  • 问题内容: 我使用nginx作为前端服务器,我修改了CSS文件,但是nginx仍在使用旧文件。 我试图重新启动nginx,但没有成功,我已经用Google搜索,但是找不到清除它的有效方法。 一些文章说我们只能删除缓存目录:,但是我的服务器上没有这样的目录。 我现在该怎么办? 问题答案: 我遇到了完全相同的问题-我在Virtualbox中运行了Nginx。我没有打开缓存。但是看起来像已经设置好了,这

  • 问题内容: 我在项目中经常使用AlamofireImage,并且使用 从我的CDN获取图像。我已经做了一些测试,但是如果我错了,请纠正我,这似乎会将下载的图像存储到缓存中。我的测试包括下载5mb的图片。第一次大约花了20秒,第二次是瞬间。 我想知道的是如何清除特定URL /图像的缓存并重新下载图像? 例如,我更新了用户个人资料照片。图像名称/ URL会完全相同,但是我知道图像会随着用户从库或相机中