什么是 InnoDB Buffer Usage 以及如何清除它?

dax*_*x90 12 mysql innodb mysql-workbench

当我进入 Mysql Workbench 时,Server > Server Status有一个名为“InnoDB Buffer Usage”的字段, 即使没有运行查询,它也是“95%”。为什么?它会影响我在新查询中的表现吗?有办法清除吗?

jyn*_*nus 12

假设您的数据集比您的缓冲池大,使用率达到 95% 不仅是正常的,而且是理想的状态。您需要有关内存的尽可能多的信息 - 硬件和资源都可以使用 - 以便下一次读取和写入都可以比必须访问磁盘更快地完成。

另一件事是内存使用是否被有效使用:如果您的读取命中率很高并且您是否可以有效地缓冲写入,您可以通过观察您的磁盘 IOPS 数量(通过查询 InnoDB 和操作系统统计信息)和缓冲池内容(在 information_schema 表上可用)。

如果您的服务器空闲,请不要担心内存使用情况(再次假设您的数据集大于您的缓冲池并且您的缓冲池小于您的物理内存)-缓冲池会在您读写数据时自然填满;它将或多或少地用作 LRU 策略的更复杂版本(使用较少的数据将首先被驱逐)。除非您想将该内存用于其他用途,因为它不是专用服务器(因此,请降低您的缓冲池使用量),否则大多数人会羡慕您,因为充分利用缓冲池是一种理想的状态。

请注意,大多数操作系统会以相同的方式缓存(文件)——除非内存用于其他用途,否则它们会尝试在内存中容纳尽可能多的数据。

除非配置为预加载,否则重新启动服务器通常会清除大部分缓冲池