InnoDB memcached插件vs原生memcached对比性能测试
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对比性能测试, 感谢原作者分享。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Zu den potenziellen Münzen, die im Währungskreis bevorzugt werden, gehören SOL-Münzen und BCH-Münzen. SOL ist der native Token der Solana-Blockchain-Plattform. BCH ist der Token des BitcoinCash-Projekts, einer Ablegerwährung von Bitcoin. Da sie unterschiedliche technische Eigenschaften, Anwendungsszenarien und Entwicklungsrichtungen aufweisen, ist es für Anleger schwierig, eine Wahl zwischen beiden zu treffen. Ich möchte analysieren, welche Währung mehr Potenzial hat: SOL-Währung oder BCH. Investieren Sie erneut. Der Währungsvergleich erfordert jedoch eine umfassende Analyse anhand des Marktes, der Entwicklungsaussichten, der Projektstärke usw. Als nächstes wird Ihnen der Herausgeber im Detail berichten. Welches hat mehr Potenzial, SOL-Coin oder BCH? Im Vergleich dazu hat die SOL-Münze mehr Potenzial. Zu bestimmen, welche Münze mehr Potenzial hat, die SOL-Münze oder die BCH, ist eine komplizierte Angelegenheit, da sie von vielen Faktoren abhängt.

Ollama ist ein superpraktisches Tool, mit dem Sie Open-Source-Modelle wie Llama2, Mistral und Gemma problemlos lokal ausführen können. In diesem Artikel werde ich vorstellen, wie man Ollama zum Vektorisieren von Text verwendet. Wenn Sie Ollama nicht lokal installiert haben, können Sie diesen Artikel lesen. In diesem Artikel verwenden wir das Modell nomic-embed-text[2]. Es handelt sich um einen Text-Encoder, der OpenAI text-embedding-ada-002 und text-embedding-3-small bei kurzen und langen Kontextaufgaben übertrifft. Starten Sie den nomic-embed-text-Dienst, wenn Sie o erfolgreich installiert haben

Leistungsvergleich verschiedener Java-Frameworks: REST-API-Anforderungsverarbeitung: Vert.x ist am besten, mit einer Anforderungsrate von 2-mal SpringBoot und 3-mal Dropwizard. Datenbankabfrage: HibernateORM von SpringBoot ist besser als ORM von Vert.x und Dropwizard. Caching-Vorgänge: Der Hazelcast-Client von Vert.x ist den Caching-Mechanismen von SpringBoot und Dropwizard überlegen. Geeignetes Framework: Wählen Sie entsprechend den Anwendungsanforderungen. Vert.x eignet sich für leistungsstarke Webdienste, SpringBoot eignet sich für datenintensive Anwendungen und Dropwizard eignet sich für Microservice-Architekturen.

Der Leistungsvergleich der PHP-Methoden zum Umdrehen von Array-Schlüsselwerten zeigt, dass die Funktion array_flip() in großen Arrays (mehr als 1 Million Elemente) eine bessere Leistung als die for-Schleife erbringt und weniger Zeit benötigt. Die for-Schleifenmethode zum manuellen Umdrehen von Schlüsselwerten dauert relativ lange.

Die Auswirkungen von Funktionen auf die Leistung von C++-Programmen umfassen den Overhead für Funktionsaufrufe sowie den Overhead für die Zuweisung lokaler Variablen und Objekte: Overhead für Funktionsaufrufe: einschließlich Stapelrahmenzuweisung, Parameterübertragung und Steuerungsübertragung, was erhebliche Auswirkungen auf kleine Funktionen hat. Overhead bei der Zuordnung lokaler Variablen und Objekte: Die Erstellung und Zerstörung einer großen Anzahl lokaler Variablen oder Objekte kann zu einem Stapelüberlauf und Leistungseinbußen führen.

Zu den wirksamen Techniken zur Optimierung der C++-Multithread-Leistung gehört die Begrenzung der Anzahl der Threads, um Ressourcenkonflikte zu vermeiden. Verwenden Sie leichte Mutex-Sperren, um Konflikte zu reduzieren. Optimieren Sie den Umfang der Sperre und minimieren Sie die Wartezeit. Verwenden Sie sperrenfreie Datenstrukturen, um die Parallelität zu verbessern. Vermeiden Sie geschäftiges Warten und benachrichtigen Sie Threads über Ereignisse über die Ressourcenverfügbarkeit.

In PHP wirkt sich die Konvertierung von Arrays in Objekte auf die Leistung aus, die hauptsächlich von Faktoren wie Array-Größe, Komplexität, Objektklasse usw. beeinflusst wird. Um die Leistung zu optimieren, sollten Sie benutzerdefinierte Iteratoren verwenden und unnötige Konvertierungen, Batch-Konvertierung von Arrays und andere Techniken vermeiden.

Die Leistung verschiedener PHP-Funktionen ist entscheidend für die Anwendungseffizienz. Zu den Funktionen mit besserer Leistung gehören echo und print, während Funktionen wie str_replace, array_merge und file_get_contents eine langsamere Leistung aufweisen. Beispielsweise wird die Funktion str_replace zum Ersetzen von Zeichenfolgen verwendet und weist eine mäßige Leistung auf, während die Funktion sprintf zum Formatieren von Zeichenfolgen verwendet wird. Die Leistungsanalyse zeigt, dass die Ausführung eines Beispiels nur 0,05 Millisekunden dauert, was beweist, dass die Funktion eine gute Leistung erbringt. Daher kann der kluge Einsatz von Funktionen zu schnelleren und effizienteren Anwendungen führen.
