mysql内存优化总结

房东的猫 提交于 2019-11-29 10:58:33

1.mysql内存优化原则

  a. 将尽量多的内存分配给mysql做缓存,但是也要给操作系统和其他程序预留足够内存。

  b. MyISAM的数据文件读取依赖于操作系统的io,因此如果有MyISAM表,就要预留更多的内粗给操作系统做io缓存。

 c. 合理设置排序区、链接区等缓存大小。


2.MyISAM内存优化

  MyISAM没有特别的缓存机制,完全依赖于操作系统的io缓存

  2.1 key_buffer_size

        key_buffer_size决定MyISAM索引块缓存去的大小,直接影响MyISAM表的存取效率。对于一般MyISAM数据库,建议至少将1/4可用内存分配给key_buffer_size

  2.2 read_buffer_size和read_rnd_buffer_size

        如果需要经常顺序扫描MyISAM表,可以通过增大read_buffer_size的值来提高性能。但是要注意它是每个session独占的,如果默认值太大,就可能浪费内存,造成物理内存耗尽。

        对于要做排序的MyISAM表查询,如带有order by子句的sql,适当增大read_rnd_buffer_size,来改善性能。它也是每个session独占的。


3 InnoDB内存优化

     InnoDB的缓存机制和MyISAM不太相同。InnoDB用一块内存区做IO缓存池,该缓存池不仅用来缓存InnoDB的索引块,也用来缓存数据块。

    3.1 innodb_buffer_pool_size

         innodb_buffer_pool_size决定InnoDB缓存区大小 就是上面提到的内存区。在保障操作系统及其他程序有足够的内存可用的情况下该值越大,性能越好。

     3.2 调整innodb_log_buffer_size

          innodb_log_buffer_size决定InnoDB重做日志缓存池的大小。对于一个会在事务中更新、插入、删除大量记录的应用,可以提高innodb_log_buffer_size来提高事务处理的性能。


 还有一个参数

 max_connections 并发连接数,决定允许连接到mysql数据库的最大数量,linux操作系统下, mysql支持500-1000不是问题

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