MySQL避免使用swap分区的方法

SWAP是操作系统虚拟出来的一部分内存地址,它的物理存储元件是磁盘。在备份数据或恢复数据时,文件系统会向Linux系统请求大量的内存作为cache。在物理内存使用殆尽时候,为了确保程序运行,往往会将另外的一些占用物理内存地址空间的程序映射到swap分区上。

MySQL程序运行时,物理内存为MySQL分配了大量的物理地址空间,以提高执行的速率。为了避免在执行消耗大量内存的操作时将MySQL所拥有的部分物理内存地址空间映射到swap分区上,可做一下调整:

1.修改系统内核参数/proc/sys/vm/swappiness。调整系统使用swap分区的倾向性,数值越低越倾向于释放文件系统的cache,不能避免Linux系统时候swap分区。  swappiness=0表示最大限度使用物理内存,然后才是swap分区。

swappiness=100表示积极使用swap分区,并且将内存上的数据及时的映射到swap分区上。

2.修改MySQL参数innodb_flush_method,开启O_DIRECT模式。Innodbbuffer pool会直接绕过文件系统cache来访问磁盘,但是redo log依旧会使用文件系统cacheRedo log是覆写模式的,即使使用了文件系统的cache也不会占用太多。

3.添加MySQL配置参数memlock。将MySQL锁定在内存中防止被swapping out