mysql数据库innodb引擎的一个重要内核参数swappiness

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库innodb引擎的一个重要内核参数swappiness相关的知识,希望对你有一定的参考价值。

在linux内核中有一个叫 swappiness 的参数。可以调整内存的使用方式。

 

默认情况下,这个数值为60,这意味着内核会比较多的为文件系统提供内存作为缓存,甚至会将一些程序占据的内存交换到swap中以腾出内存。

这正好与使用innodb引擎的mysql数据库有冲突:innodb缓冲池本来就相当于文件系统的缓存,它会缓存住一部分读取过的数据库。

这部分内存通常不会怎么修改变动,所以操作系统就更会倾向于交换出这部分内存到swap中。这样,当mysql真的需要innodb缓冲区中

的数据时,操作系统需要重新读取相应的swap到内存中,甚至更糟的是它会将其他部分内存交换到swap以保持足够的系统内存(文件系统缓存)。

这就使得innodb缓冲区不但没起到加速的作用,反而比不缓存更慢。

 

对于这种情况,可以考虑把 swappiness 参数设置为0:尽量倾向于把内存分配给程序进程(这里正好是指innodb缓冲区),而不是文件系统缓存。

 

具体命令如下:

echo 0 > /proc/sys/vm/swappiness


以上是关于mysql数据库innodb引擎的一个重要内核参数swappiness的主要内容,如果未能解决你的问题,请参考以下文章

InnoDB引擎的特点及优化方法

Innodb重要参数优化

[系统软件工程师面试] 6. mysql

浅谈MYSQL引擎之INNODB引擎

《MySQL系列-InnoDB引擎13》文件-参数文件

《MySQL系列-InnoDB引擎13》文件-参数文件