TCMalloc 对MYSQL 性能 优化的分析
虽然经过研究发现TCMalloc不适合我们现有的游戏框架,但意外收获发现TCMalloc可以大幅度提高MYSQL 性能及内存占用,这里给出配置及测试的结果:
1.配置
关于TCMalloc的安装,在《Google perftools 安装手记(TCMalloc)》 一文中已经详细给出,下面给出将TCMalloc配置到MYSQL的步骤:
1.1 修改MySQL启动脚本(依据MySQL安装位置):
vi /usr/local/mysql/bin/mysqld_safe
在# executing mysqld_safe的下一行,添加:
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
保存退出,并重启MySQL
1.2 依据lsof验证命令查看TCMalloc是否起效:
# lsof |grep -i libtcmalloc.so
如果发现以下信息,说明tcmalloc已经起效:
mysqld mysql mem REG , /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..tar.gz
cd sysbench-0.4.
./configure && make && make install
strip /usr/local/bin/sysbench
选项说明参考:http://www.cnblogs.com/zhoujinyi/archive/2013/04/19/3029134.html
3.性能分析:
sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size= --max-requests= --num-threads= --mysql-host=127.0.0.1 --mysql-port= --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= --max-requests= --num-threads= --mysql-host=127.0.0.1 --mysql-port= --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= --max-requests= --num-threads= --mysql-host=127.0. --mysql-port= --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,0代表不限制。
--max-requests=N limit for total number of requests [] #请求的最大数目。默认为10000,0代表不限制。
--num-threads=N number of threads to use [] #创建测试线程的数目。默认为1.
--mysql-host=[LIST,...] MySQL server host [localhost]
--mysql-port=N MySQL server port []
--mysql-password=STRING MySQL password []
--mysql-db=STRING MySQL database name [sbtest]
--mysql-socket=STRING MySQL socket
测试结果:
|
未使用TCMalloc OLTP test statistics: Test execution summary: |
使用TCMalloc OLTP test statistics: Test execution summary: |
可以看到使用TCMalloc性能明显优于未使用,这里主要原因是mysql是多线程小内存分配,TCMalloc由于每个线程均有线程缓冲区,所以对这样的小对象分配无竞争,效率非常好,可以看到TCMalloc对MYSQL优化效果不错 ,建议使用。
TCMalloc 对MYSQL 性能 优化的分析的更多相关文章
- mysql性能优化-慢查询分析、优化索引和配置 (慢查询日志,explain,profile)
mysql性能优化-慢查询分析.优化索引和配置 (慢查询日志,explain,profile) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 ...
- MySQL性能优化的21个最佳实践
http://www.searchdatabase.com.cn/showcontent_38045.htm MySQL性能优化的21个最佳实践 1. 为查询缓存优化你的查询 大多数的MySQL服务器 ...
- Mysql - 性能优化之子查询
记得在做项目的时候, 听到过一句话, 尽量不要使用子查询, 那么这一篇就来看一下, 这句话是否是正确的. 那在这之前, 需要介绍一些概念性东西和mysql对语句的大致处理. 当Mysql Server ...
- Mysql性能优化三(分表、增量备份、还原)
接上篇Mysql性能优化二 对表进行水平划分 如果一个表的记录数太多了,比如上千万条,而且需要经常检索,那么我们就有必要化整为零了.如果我拆成100个表,那么每个表只有10万条记录.当然这需要数据在逻 ...
- mysql 性能优化方向
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- MySQL性能优化总结
一.MySQL的主要适用场景 1.Web网站系统 2.日志记录系统 3.数据仓库系统 4.嵌入式系统 二.MySQL架构图: 三.MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎 ...
- MYSQL性能优化的最佳20+条经验
MYSQL性能优化的最佳20+条经验 2009年11月27日 陈皓 评论 148 条评论 131,702 人阅读 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数 ...
- mysql 性能优化方案
网 上有不少MySQL 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果 ...
- mysql 性能优化方案1
网 上有不少mysql 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果 ...
随机推荐
- aviator使用手册在线
Aviator是一个高性能.轻量级的 java 语言实现的表达式求值引擎, 主要用于各种表达式的动态求值.现在已经有很多开源可用的 java 表达式求值引擎,为什么还需要 Avaitor 呢? Avi ...
- DataSet的灵活,实体类的方便,DTO的效率:SOD框架的数据容器,打造最适合DDD的ORM框架
引言:DDD的困惑 最近,我看到园子里面有位朋友的一篇博客 <领域驱动设计系列(一):为何要领域驱动设计? >文章中有下面一段话,对DDD使用产生的疑问: •没有正确的使用ORM, 导致数 ...
- 1 UML基础
学习设计模式的过程中,发现相关的作者们都会用UML类图来表示一个模式的整体脉络,这种方式确实直观明了,既能体现宏观思路.又能兼顾实现细节.真的是很妙的工具.在开始正式学习设计模式之前,有必要对UML有 ...
- 国际化支持(I18N)
本章译者:@nixil 使用国际化支持(I18N)能够使你的应用根据用户所在地区的不同选择不同的语言.下面介绍如何在引用中使用国际化. 只允许使用UTF-8 Play只支持UTF-8一种字符编码.这是 ...
- SQL Server 跨库同步数据
最近有个需求是要跨库进行数据同步,两个数据库分布在两台物理计算机上,自动定期同步可以通过SQL Server代理作业来实现,但是前提是需要编写一个存储过程来实现同步逻辑处理.这里的存储过程用的不是op ...
- 关于HTML面试题汇总之visibility
一.页面可见性(visibility) 主要提供两个属性,一个事件(都在document对象上):1. 属性: 1.1. hidden:获取或设置当前页面的可见性,boolean值: 1.2 ...
- Javascript实现的2048
HTML代码如下 <!DOCTYPE html> <html> <head> <title></title> <meta charse ...
- Junit单元测试笔记
什么是单元测试? 单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的.很明确的功能是否正确. 单元测试目的? 执行单元测试,是为了证明某段代码的行为确实和开发者所期望的一致. 白盒测试和单 ...
- 对于Access数据库查询遇到空值的解决办法
1.Access数据库在office环境下对于null是识别的,但是,在开发环境下,Access数据库对于where xxx is null是不识别的. 2.查询空值解决办法:select * fro ...
- 原创:phoenix4.6.0连接hbase1.1.2(不使用phoenix-4.6.0-HBase-1.1-client.jar)
官网上面的例子是在phoenix-4.6.0-HBase-1.1-client.jar完成的,这个jar包含了phoenix4.6连接hbase1.1.2所有的依赖,真是包罗万象(里面竟然还包括了se ...