设为首页 收藏本站
查看: 1551|回复: 0

[经验分享] InnoDB memcached插件 vs 原生memcached对比性能测试

[复制链接]

尚未签到

发表于 2018-12-25 07:15:07 | 显示全部楼层 |阅读模式
  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>  内核
  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
  直接以曲线图方式对比:
DSC0000.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
  曲线图方式对比:
DSC0001.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写缓存数据;



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-655439-1-1.html 上篇帖子: 用memcached实现session共享 下篇帖子: MySQL UDFS For Memcached
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表