操作系统级别和MySQL

我刚才读到,innodb_buffer_pool_size的错误configuration可能导致操作系统级的分页。 有谁知道这是怎么发生的,以及如何防止这种情况? 目前我正在使用CentOS 4和MySQL 5.0.41

在my.cnf中放置memlock选项 。 在CentOS5中,SELinux阻止了在内存中lockingmysqld进程,我必须创build自己的模块来启用它。

另一种可能性是使用大页面 ,它总是驻留在内存中。 你必须记得在你的mysqld启动脚本中放置ulimit -l unlimited

简单地说,为了避免分页,你需要保持足够小的缓冲区大小,以使其完全适应内存,以及操作系统使用内存的一切。 如果总的内存需求变得比它交换的物理内存大。 如果您没有交换空间,必须要中断。

如果你的计算机上启用了交换,并且你有更大的缓冲池比你有物理RAM,那么它会导致东西交换到磁盘释放你的缓冲池RAM。 通过禁用交换或确保mysql永远不会吃掉足够的物理内存来换出。