暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

优化MySQL内存管理方式

原创 Haruhi 2020-05-09
2039

什么是jemalloc:

jemalloc是一个malloc()碎片避免和可扩展的并发支持的实现。主要体现在避免内存碎片的产生和并发扩展上。
jemalloc是如何避免内存碎片产生的:
jemalloc首次分配小/大对象时,应用程序线程以循环方式分配给arenas。arenas完全相互独立。他们维护自己的块,从中为小/大对象雕刻页面运行。无论哪个线程执行释放,释放的内存总是返回到它所来自的arenas。

相关概念:

arena chunk:
虚拟内存被逻辑上分割成chunks
arenas:
malloc是统一来管理内存,就像一个池塘,所有内存就是一个池塘。而jemalloc是把这个池塘划分为几个小块,为每个进程分配一个块,各个块之间相互独立,这个块就称之为arenas。
Thread cache:
各个线程每一个都分配到一个arenas,使之完全相互独立,互不干扰。

MySQL如何使用jemalloc:

一、jemalloc的安装:

1、下载:wget https://github.com/jemalloc/jemalloc/releases/download/5.2.0/jemalloc-5.2.0.tar.bz2
2、解压:tar -jxf jemalloc-5.2.0.tar.bz2
cd jemalloc-5.2.0
3、编译:./configure --prefix=/usr/local/jemalloc --libdir=/usr/lib
4、安装:make && make install
5、加入:echo /usr/lib >> /etc/ld.so.conf
6、调用:ldconfig

二、MySQL调用:

1、在my.cnf配置文件中加入:
vim my.cnf:

[mysqld_safe]
malloc-lib=/usr/lib/libjemalloc.so

三、查看是否已启用jemalloc

lsof -n|grep libjemalloc.so

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论