TCMalloc 对MySQL 性能 优化的分析
来源:互联网 发布:淘宝评论给什么 编辑:程序博客网 时间:2024/05/21 11:10
Author:Echo Chen(陈斌)
Email:chenb19870707@gmail.com
Blog:Blog.csdn.net/chen19870707
Date:October 10th, 2014
虽然经过研究发现TCMalloc不适合我们现有的游戏框架,但意外收获发现TCMalloc可以大幅度提高MYSQL 性能及内存占用,这里给出配置及测试的结果:
一、配置
关于TCMalloc的安装,在《Google perftools 安装手记(TCMalloc)》 一文中已经详细给出,下面给出将TCMalloc配置到MYSQL的步骤:
1.修改MySQL启动脚本(依据MySQL安装位置):
vi /usr/local/mysql/bin/mysqld_safe在# executing mysqld_safe的下一行,添加:export LD_PRELOAD=/usr/local/lib/libtcmalloc.so保存退出,并重启MySQL
2.依据lsof验证命令查看TCMalloc是否起效:
# lsof |grep -i libtcmalloc.so如果发现以下信息,说明tcmalloc已经起效:mysqld 13961 mysql mem REG 253,0 1948990 196421/usr/local/lib/libtcmalloc.so.4.1.2
二、性能测试工具sysbench
sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。以下操作都将以支持MySQL数据库为例进行。sourceforge已挂,下载地址:http://download.csdn.net/detail/chen19870707/8060033,安装步骤如下:
tar zxf sysbench-0.4.10.tar.gz cd sysbench-0.4.10./configure && make && make install strip /usr/local/bin/sysbench
选项说明参考:http://www.cnblogs.com/zhoujinyi/archive/2013/04/19/3029134.html
三、性能分析:
sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=10000 --max-requests=10000 --num-threads=16 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=root --mysql-db=test --mysql-socket=/tmp/mysql.sock prepare
sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=10000 --max-requests=10000 --num-threads=16 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=root --mysql-db=test --mysql-socket=/tmp/mysql.sock run >> report.txt
/usr/local/bin/sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=10000 --max-requests=10000 --num-threads=16 --mysql-host=127.0.01 --mysql-port=3306 --mysql-user=root --mysql-password=root --mysql-db=test --mysql-socket=/tmp/mysql.sock cleanup
--oltp-table-size=N 测试表的记录数。默认是10000 --max-requests=N limit for total number of requests [10000] #请求的最大数目。默认为10000,0代表不限制。--max-requests=N limit for total number of requests [10000] #请求的最大数目。默认为10000,0代表不限制。--num-threads=N number of threads to use [1] #创建测试线程的数目。默认为1.--mysql-host=[LIST,...] MySQL server host [localhost]--mysql-port=N MySQL server port [3306]--mysql-password=STRING MySQL password []--mysql-db=STRING MySQL database name [sbtest]--mysql-socket=STRING MySQL socket
未使用TCMalloc
OLTP test statistics:
queries performed:
read: 140112
write: 50019
other: 20008
total: 210139
transactions: 10000 (756.11 per sec.)
deadlocks: 8 (0.60 per sec.)
read/write requests: 190131 (14376.02 per sec.)
other operations: 20008 (1512.83 per sec.)
Test execution summary:
total time: 13.2256s
total number of events: 10000
total time taken by event execution: 211.4342
per-request statistics:
min: 2.96ms
avg: 21.14ms
max: 423.52ms
approx. 95 percentile: 56.25ms
使用TCMalloc
OLTP test statistics:
queries performed:
read: 140084
write: 50017
other: 20006
total: 210107
transactions: 10000 (862.83 per sec.)
deadlocks: 6 (0.52 per sec.)
read/write requests: 190101 (16402.39 per sec.)
other operations: 20006 (1726.17 per sec.)
Test execution summary:
total time: 11.5898s
total number of events: 10000
total time taken by event execution: 185.2397
per-request statistics:
min: 2.81ms
avg: 18.52ms
max: 430.03ms
approx. 95 percentile: 36.49ms
可以看到使用TCMalloc性能明显优于未使用,这里主要原因是mysql是多线程小内存分配,TCMalloc由于每个线程均有线程缓冲区,所以对这样的小对象分配无竞争,效率非常好,可以看到TCMalloc对MYSQL优化效果不错 ,建议使用。
-
Echo Chen:Blog.csdn.net/chen19870707
- TCMalloc 对MYSQL 性能 优化的分析
- TCMalloc 对MySQL 性能 优化的分析
- 利用TCMalloc优化Nginx的性能
- 利用TCMalloc优化Nginx的性能
- 利用TCMalloc优化Nginx的性能
- Tcmalloc 优化 Nginx Mysql
- 利用TCMalloc优化nginx性能
- 使用tcmalloc提升mysql性能
- 使用tcmalloc提升mysql性能
- tcMalloc 配置和优化 nginx 高性能
- 优化的内存访问 TCMalloc
- 优化的内存访问 TCMalloc
- Mysql索引的优化分析-索引性能分析
- 使用GooglePerformanceTools--tcmalloc提高MySQL服务器性能
- MySQL性能分析与优化
- MySQL性能分析和优化
- TCMalloc优化MySQL、Nginx、Redis内存管理
- TCMalloc优化MySQL、Nginx、Redis内存管理
- 【Socket编程】篇三
- 二进制编码知识
- java 生成随机6位每位都不重复的数字
- 学习move_base包
- 【连载】关系型数据库是如何工作的?(18) - 查询管理器之动态编程
- TCMalloc 对MySQL 性能 优化的分析
- opencv2.4.10+VS2013安装
- 选择排序之--简单选择排序,堆排序
- hdu1712分组背包
- 设计模式之策略模式
- GDOI 2016 Day1 T4 疯狂动物城
- 嵌入式电路板上 tcpdump 抓包方法
- Android开源框架Universal-Image-Loader源码解析
- Codeforces Round #352 (Div. 2) C. Recycling Bottles