我阅读了许多文档,包括 percona 和 MariaDB 文档,他们在其中建议将 innodb_buffer_pool_size 设置为 RAM 的 70-80%。我的问题是,是总 RAM 还是可用 RAM?例如,当我在 CentOS-6.5 上运行 free -m 时,我得到以下信息:
[root@master5 ~]# free -m
total used free shared buffers cached
Mem: 19991 999 10992 0 38 92
-/+ buffers/cache: 867 19123
Swap: 1999 0 1999
那么是19991的75-80%还是10992的75-80%?
总计,但请记住,这只是一个经验法则。设置值时使用常识。InnoDB 确实喜欢尽可能多的内存,但有几件事需要考虑:
1) 确保有足够的 RAM 剩余用于需要在服务器上运行的所有其他内容
2) 请记住,InnoDB 缓冲池的作用是处理数据的正常工作集。您的数据库总数有多大,包括一些增长因素?没有比这更多的设置缓冲池的真正需要,即使你有 RAM。但是您的工作数据集(在日常活动中使用的数据)通常低于数据库的总大小。为了获得最佳性能,它真正需要在 RAM 中保留多少?