设为首页 加入收藏

TOP

TCMalloc 对MYSQL 性能 优化的分析(一)
2015-11-21 01:32:39 来源: 作者: 【 】 浏览:2
Tags:TCMalloc MYSQL 性能 优化 分析
虽然经过研究发现TCMalloc不适合我们现有的游戏框架,但意外收获发现TCMalloc可以大幅度提高MYSQL 性能及内存占用,这里给出配置及测试的结果:
?
1.配置
?
关于TCMalloc的安装,在《Google perftools 安装手记(TCMalloc)》 一文中已经详细给出,下面给出将TCMalloc配置到MYSQL的步骤:
?
1.1 修改MySQL启动脚本(依据MySQL安装位置):
1 vi /usr/local/mysql/bin/mysqld_safe
  在# executing mysqld_safe的下一行,添加:
1 export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
 保存退出,并重启MySQL
1.2 依据lsof验证命令查看TCMalloc是否起效:?
1 # lsof |grep -i libtcmalloc.so
?如果发现以下信息,说明tcmalloc已经起效:
1 mysqld ?13961 ? mysql ?memREG ?253,0 ?1948990 196421/usr/local/lib/libtcmalloc.so.4.1.2
?
2.性能测试工具sysbench
?
sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。以下操作都将以支持MySQL数据库为例进行。sourceforge已挂, 下载地址:http://download.csdn.net/detail/chen19870707/8060033,安装步骤如下:
?
1 tar zxf sysbench-0.4.10.tar.gz?
2 cd sysbench-0.4.10
3 ./configure && make && make install?
4 strip /usr/local/bin/sysbench?
?
?
3.性能分析:
  数据准备:
1 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
  性能测试:
1 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
  数据清理:
1 /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
  参数说明:
?
1 --oltp-table-size=N ? 测试表的记录数。默认是10000 --max-requests=N limit for total number of requests [10000] #请求的最大数目。默认为10000,0代表不限制。
2 --max-requests=N limit for total number of requests [10000] #请求的最大数目。默认为10000,0代表不限制。
3 --num-threads=Nnumber of threads to use [1] #创建测试线程的数目。默认为1.
4 --mysql-host=[LIST,...] MySQL server host [localhost]
5 --mysql-port=NMySQL server port [3306]
6 --mysql-password=STRING MySQL password []
7 --mysql-db=STRING MySQL database name [sbtest]
8 --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 per

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Mysql5.7新特性 下一篇MySQL配置参数详解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: