InnoDB memcached插件 vs 原生memcached对比性能测试

InnoDB memcached插件 vs 原生memcached对比性能测试


转载自:http://imysql.cn/2013/08/15/innodb-memcached-vs-native-memcached-benchmark.shtml


MySQL 5.6开始支持InnoDB memcached插件,也就是可以通过SQL高效读写memcached里的缓存内容,也支持用原生的memcache协议读写,并且可以实现缓存数据 持久化,以及crash recovery、mysql replication、触发器、存储过程等众多特性,详细介绍可以查看:Benefits of the InnoDB / memcached Combination。看起来非常诱人,那就测试下看看吧,是驴子是马拉出来溜溜便知。

 

  • 环境准备

测试机

DELL PE R710

CPU

E5620  @ 2.40GHz(4 core, 8 threads, L3 Cache 12 MB) * 2

内存

48G(8G * 6)

RAID卡

PERC H700 Integrated, 512MB, BBU, 12.10.1-0001

系统

Red Hat Enterprise Linux Server release 6.4 (Santiago)

内核

2.6.32-358.el6.x86_64 #1 SMP

raid级别

raid 5(10K RPM SAS 300G * 6)

文件系统

xfs

硬盘

10K RPM SAS 300G * 6, 1 hotspare


  • 测试方案

方案一

server端运行InnoDB MC,本地/远程调用memslap执行benchmark

方案二

server端运行Native MC,本地/远程调用memslap执行benchmark


  • 测试脚本

cat memslap_run.sh
#!/bin/sh
. ~/.bash_profile > /dev/null 2>&1
cd /home/mc-bench
exec 3>&1 4>&2 1>> memcache_memslap_${RANDOM}.log 2>&1
#不断循环
while [ 1 ]
do
#并发线程数 4 ~ 256
for THREAD in 4 8 16 32 64 128 256
do
#每种并发测试5次
count=1
max=5
while [ $count -le ${max} ]
do
#取样
echo "memstat"
memstat
# --flush 每次测试完毕钱,都先清空数据
# --binary 采用binary模式
# 初始化数据: 5000000, 每个并发线程存取数据量: 100000
# 并发256线程时, 总数据量可达 30,600,000
# 未指定 --test 选项,默认是进行 set 测试
memslap --server=mc_server:11211 --concurrency=${THREAD} --execute-number=100000 --initial-load=5000000 --flush --binary
count=`expr ${count} + 1`
#每次测试完毕后,都休息2分钟,等待服务器恢复空负载
if [ ${count} -lt ${max} ] ; then
sleep 120
fi
echo ""
echo ""
done
done
done


  • 测试结果

1. 写MC

线程数            
耗时

256

128

64

32

16

8

4

NativeMC(单位:1秒)

104.315

47.646

24.486

12.162

6.351

5.525

5.078

InnoDBMC(单位:100秒)

339.1431

68.11128

27.67265

11.26917

4.968556

2.24988

1.104334


直接以曲线图方式对比:

http://wp.imysql.com/wp-content/uploads/2013/08/02-result-set-20130828.png

nativemc-vs-innodbmc-benchmark-02-set-result-20130828


2. 读MC

线程数            
耗时

4线程并发,2千万记录

本地Native MC

198.5016

本地InnoDB MC

327.239

远程Native MC

846.286

远程InnoDB MC

912.467


曲线图方式对比:

http://wp.imysql.com/wp-content/uploads/2013/08/03-result-get-20130828.png

nativemc-vs-innodbmc-benchmark-03-get-result-20130828


  • 结论

InnoDB MC看起来很美好,现实很骨感,其并发4线程写数据需呀的耗时,和原生memcached的256线程相当,差的不是一丁半点啊,还有很大优化空间。


而如果是缓存只读,InnoDB MC本地读取的效率大概是原生memcached的2/3,如果是远程读取,则相当于是本地读取效率的1/4 ~ 1/3。


  • 建议应用场景

鉴于上面的测试结果,建议将InnoDB MC这么来用:

1. 数据写入通过触发器(trigger)或者调度器(event scheduler)将待缓存数据同步到InnoDB MC缓存表中;

2. 以memcache API方式,通过本地/远程读取InnoDB MC中的缓存记录;

3. 尽可能减少通过远程方式往InnoDB MC写缓存数据;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值