MySQL 5.6开始支持InnoDB memcached插件,也就是可以通过SQL高效读写memcached里的缓存内容,也支持用原生的memcache协议读写,并且可以实现缓存数据持久化,以及crash recovery、mysql replication、触发器、存储过程等众多特性,详细介绍可以查看:Benefit
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 |
直接以曲线图方式对比:
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 |
曲线图方式对比:
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写缓存数据;
原文地址:InnoDB memcached插件vs原生memcached对比性能测试, 感谢原作者分享。

Memcached是一种常用的缓存技术,它可以使Web应用程序的性能得到很大的提升。在PHP中,常用的Session处理方式是将Session文件存放在服务器的硬盘上。但是,这种方式并不是最优的,因为服务器的硬盘会成为性能瓶颈之一。而使用Memcached缓存技术可以对PHP中的Session处理进行优化,提高Web应用程序的性能。PHP中的Session处

InnoDB是MySQL的数据库引擎之一,现为MySQL的默认存储引擎,为MySQL AB发布binary的标准之一;InnoDB采用双轨制授权,一个是GPL授权,另一个是专有软件授权。InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID);InnoDB支持行级锁,行级锁可以最大程度的支持并发,行级锁是由存储引擎层实现的。

InnoDB是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内存中的内容刷新到磁盘上。而我们知道读写磁盘的速度非常慢,和内存读写差了几个数量级,所以当我们想从表中获取某些记录时,InnoDB存储引擎需要一条一条的把记录从磁盘上读出来么?InnoDB采取的方式是:将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为16

PHP8.0中的缓存库:Memcached随着互联网的快速发展,现代应用程序需要高效可靠的缓存技术来提高性能和处理大量数据。由于PHP的流行和开源特性,PHP缓存库已经成为了Web开发社区的一个必备工具。Memcached是一种广泛使用的开源高速内存缓存系统,它能处理数百万个同时连接的缓存请求,可以用于许多不同类型的应用程序,例如社交网络、在线

1.Mysql的事务隔离级别这四种隔离级别,当存在多个事务并发冲突的时候,可能会出现脏读,不可重复读,幻读的一些问题,而innoDB在可重复读隔离级别模式下解决了幻读的一个问题,2.什么是幻读幻读是指在同一个事务中,前后两次查询相同范围的时候得到的结果不一致如图,第一个事务里面,我们执行一个范围查询,这个时候满足条件的数据只有一条,而在第二个事务里面,它插入一行数据并且进行了提交,接着第一个事务再去查询的时候,得到的结果比第一次查询的结果多出来一条数据,注意第一个事务的第一次和第二次查询,都在同

随着互联网的快速发展,大规模MySQL数据库备份和恢复成为各大企业和网站必备的技能之一。而随着Memcached的广泛应用,如何备份和恢复Memcached也成为了一个重要的问题。PHP作为Web开发的主力语言之一,在处理备份和恢复MySQL和Memcached上拥有独特的优势和技巧。本文将详细介绍PHP处理MySQL和Memcached备份与恢复的实现方法

一、回退重新装mysql为避免再从其他地方导入这个数据的麻烦,先对当前库的数据库文件做了个备份(/var/lib/mysql/位置)。接下来将Perconaserver5.7包进行了卸载,重新安装原先老的5.1.71的包,启动mysql服务,提示Unknown/unsupportedtabletype:innodb,无法正常启动。11050912:04:27InnoDB:Initializingbufferpool,size=384.0M11050912:04:27InnoDB:Complete

MySQL储存引擎选型对比:InnoDB、MyISAM与Memory性能指标评估引言:在MySQL数据库中,储存引擎的选择对于系统性能和数据完整性起着至关重要的作用。MySQL提供了多种储存引擎,其中最常用的引擎包括InnoDB、MyISAM和Memory。本文将就这三种储存引擎进行性能指标评估,并通过代码示例进行比较。一、InnoDB引擎InnoDB是My


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

記事本++7.3.1
好用且免費的程式碼編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境