最新消息: PyCharm vs VSCode,哪个更好?
您现在的位置是:群英 > 开发技术 > web开发 >
浅析MySQL内存的使用说明
ITPUB发表于 2021-01-13 16:20 次浏览
MySQL中内存分为全局内存和线程内存两大部分(其实并不全部,只是影响比较大的 部分),下面这篇文章主要给大家介绍了关于MySQL内存使用的查看方式,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
 

现在大内存机器已经成为互联网公司的标配,对于内存的优化已经不像以前显得那么重要,然而,我们还是有必要了解一些MySQL内存使用的知识,这会让我们的调优更有效果,也避免可能出现的故障,比如OOM。

1、MySQL使用内存一般有两大块,如果你使用MyISAM,需要关注留给索引缓存的内存,参数是Key_buffer_size,如果你使用的InnoDB,需要关注的参数是 innodb_buffer_pool_size,它定义了我们分配给数据库数据缓冲池的内存大小。

对于一些MySQL基于自身管理目的分配的内存,我们并没有什么手段去调整和优化,我们主要优化的是数据操作阶段的内存使用,这方面也是内存的大头所在,我们可以从全局和会话两个级别进行调整。

对于一些全局分配的内存,如key_buffer_size, query_cache_size etc,在系统启动之初,就会完成初始化分配,分配所有内存。对于另外的一些涉及到查询行为的内存参数,比如read_buffer_size, sort_buffer_size, join_buffer_size,MySQL在查询需要的时候才分配这些内存,我们需要留意这些参数不要设置得过大,因为如果真的查询需要使用到这部分内存,而你又拥有大量的连接,那么可能无谓的浪费大量内存。具体的还有许多内存相关的参数,大家可以查询官方文档,具体不再赘述。

2、如果希望内存尽量节省,我们应该尽量基于主键进行检索,要充分利用索引筛选记录和排序记录。

3、一些非核心功能的特性,比如存储过程、分区表,可能导致大量的内存被使用而未释放,而你却很难去调优。

4、我们会观察到,实际MySQL使用的内存会比 innodb_buffer_pool_size 这个参数设置的要大10%左右,当你要设置一个很大的 innodb_buffer_pool_size 的时候,这些额外的元数据管理开销你要留意。

5、建议MyISAM和InnoDB不要混用。

6、许多实践证明,Linux系统默认的内存分配器对于多线程内存分配管理不佳,如果你需要极致的性能,建议使用 jemalloc 或者 tcmalloc代替之,在核数多于8核的情况下, jemalloc 或者 tcmalloc会表现的出色的多。


免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
下一篇:没有了
相关信息推荐