show variables like '%innodb_use_sys_malloc%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_use_sys_malloc | ON |
+-----------------------+-------+
1 row in set (0.00 sec)
#默认设置值为1,
#设置为0:表示Innodb使用自带的内存分配程序。
#设置为1:表示InnoDB使用操作系统的内存分配程序。
与默认的glibc中的malloc相比
Tcmalloc在内存上的分配效率和速度上要高的多
可以提高mysql服务器在高并发,降低系统负载
安装libunwind和gperftools
#tar zxvf libunwind-1.1.tar.gz
#cd libunwind-1.1
#./configure
#make
#make install
tar zxvf tar zxvf gperftools-2.1.tar.gz
#cd gperftools-2.1
#./configure
#make
#make install
vi /usr/local/mysql/bin/mysqld_safe
在# executing mysqld_safe的下一行,添加:
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
保存退出,并重启MySQL
依据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验证
作比较发现使用tcmalloc后比未使用tcmalloc的每秒是事务数高15%左右