1

我正在运行 mysqltuner 来调整我的数据库,我遇到了一个非常奇怪的事件。

即使整个数据库是 MyISAM(所有表),它也会显示以下内容:

[!!] InnoDB data size / buffer pool: 403.1M/128.0M

数据库的默认存储引擎是 InnoDB(即使所有表都是 MyISAM)所以我认为这可能会导致问题,但是当我将 default-storage-engine 值更改为 MyISAM 时,我仍然看到与 InnoDB 相关的完全相同的警告在 mysqltuner 中。

那么为什么会发生这种情况,我该如何解决呢?当我一开始不使用 InnoDB 时,我宁愿不要在 InnoDB 的缓冲池上浪费 400M。

注意:我不想在这里讨论 MyISAM VS InnoDB 的古老问题,我只需要弄清楚为什么 InnoDB 会占用我的资源,即使我没有使用它。

4

1 回答 1

1

消歧:“数据大小”不是“缓冲池”。

数据大小是磁盘上数据库文件的大小。它可以通过innodb_data_file_path服务器选项进行配置。

缓冲池是用作 InnoDB 表数据和索引的缓冲区的内存 (RAM) 空间。它的配置选项是innodb_buffer_pool_size.


首先,确保您的实例中根本没有 InnoDB 表:

SELECT * FROM information_schema.tables WHERE engine='InnoDB';

那么如果确实没有 InnoDB 表,可以从头开始重建 InnoDB 表空间(只有减少表空间的方法,这是 MySQL 一个恼人的缺失特性)。即使有 InnoDB 表,您仍然可以重建表空间以回收一些未使用的空间(有关更多信息,另请参阅此答案)。

请注意,您不能设置innodb_buffer_pool_size任何小于 5 MB 的值。skip-innodb但是您可以使用该选项完全禁用 InnoDB(连同它的缓冲区) 。

于 2013-08-19T14:12:49.293 回答