社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

启动MySQL如何加载Jemalloc

老叶茶馆 • 5 年前 • 518 次点击  


如何加载Jemalloc。

有时候,我们想采用Jemalloc代替glibc自带的lib库,或者如果想启用TokuDB引擎,则就必须启用Jemalloc才行了。

如果通过搜索引擎找到如何加载Jemalloc方法时,可能会看到像下面这种建议:

#修改my.cnf文件 [mysqld_safe]配置区间,加上Jemalloc选项
[mysqld_safe]
thp-setting = never
malloc-lib = /usr/lib64/libjemalloc.so

实际上这种做法现在已经不能用了。尤其是从MySQL 5.7版本开始,已经默认不使用mysqld_safe来启动了,可以改用下面的方法:

#在启动mysqld之前,执行命令
export LD_PRELOAD=/lib64/libjemalloc.so

#然后再正常启动mysqld即可,例如
/usr/local/mysql/bin/mysqld --default-file=/mysql/mysql-8.0/my.cnf &

LD_PRELOAD是个环境变量,用于动态库的加载,动态库加载的优先级最高。
一般情况下,其加载顺序为:

LD_PRELOAD>LD_LIBRARY_PATH => /etc/ld.so.cache => /lib => /usr/lib

然后执行下面的命令确认是否正确加载了:

[root@imysql ~]# lsof -p `pidof mysqld` | grep -i jemalloc
mysqld 21481 mysql mem REG 253,0 212096 1600 /usr/lib64/libjemalloc.so.1

如果能看到类似上面的结果,就表示成功了。

最后多说一句,也可以考虑采用Google的TCMalloc(Google Performance Tools项目),有同学测试过,其内存管理效率比Jemalloc还要略好些。

延伸阅读

  • Jemalloc项目:https://github.com/jemalloc/jemalloc

  • TCMalloc项目:https://github.com/gperftools/gperftools


我的新课程《MySQL性能优化》已经在腾讯课堂发布,本课程讲解读几个MySQL性能优化的核心要素:合理利用索引,降低锁影响,提高事务并发度。下面是报名小程序码,厚着脸皮请求大家推荐给需要的小伙伴们。


下面是本课程内容目录



点“在看”给我一朵小黄花



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55201
 
518 次点击