MySQL性能优化之swap占用高

↘锁芯ラ 提交于 2019-11-30 17:34:23

    在MySQL的大数据量测试时,发现MySQL单表数据约超过4000万行时出现性能拐点。查询性能逐步下降,但下降还算缓慢。

    继续添加数据,又出现一次明显的性能拐点。性能可谓是陡降,磁盘IO显著上升,开始使用交换分区。

    此时MySQL的数据文件和内存一般大!这不太可能吧,当数据文件和内存一般大时就会出现性能下降?那以前服务器内存小的时候,MySQL岂不是不用干了?

    部分内存是被操作系统吃了。手动干掉操作系统的文件缓存`echo 3 > /proc/sys/vm/drop_caches`,以为这样会让MySQL可用内存更多。但结果并未见好转,反而是缓存刚被清是性能更差了。

    经过一轮搜索,原来是需要告诉操作系统尽可能的不要使用磁盘作交换:`echo 0 > /proc/sys/vm/swappiness`(更新到系统配置,在/etc/sysctl.conf上添加vm.swappiness = 0)。

    此值默认为60,即(60%)。当然,设为0并非禁用,而是最大限度地使用物理内存。

    OK,加此设置之后,MySQL在更多数据量时也未出现swap交换的现象、性能随数据量的增加平缓下降

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!