NoSQL performance numbers - MySQL and Redis

Links to performance numbers posted wrt various NoSQL solutions:

A top 20 global website announced they have migrated from MySQL to Redis. There will be a keynote and everything. It doesn't say how big the Redis Cluster is, but they serve 100M pages / day, and clock 300k Redis queries / second.!topic/redis-db/d4QcWV0p-YM

Btw, they mention that MySQL remains as the master data store from which the Redis indexes are generated.
(The reason I don't mention the name of this Redis user is simply I feat my mom is sometimes reading my blog...)

This is an oldie, but already 2 years ago DeNA posted a benchmark doing 750k MySQL queries / second on only a single server. This was with HandlerSocket, the first widely used NoSQL API for InnoDB based MySQL databases.…

Last week MySQL Cluster team announced a new version. (congratulations, fellows!) The hardware in this benchmark is quite beefy: 8 modern servers with Infiniband as the interconnect. Even so the results, again using the NDB NoSQL API, are impressive: 1 billion queries per minute, or 17 million per second.…

It should be mentioned the above is not an apples to oranges comparison. The Redis numbers are from a production installation and not a benchmark. Obviously you wouldn't want to max out your performance in production. Quite the contrary: for HA purposes you want to make sure to run at most at 50% your capacity. So if we take this 50% limit into account, then MySQL Cluster can only do a measly 8 million queries per second :-)

PS: I've seen the Austin Powers movies, twice, yet I can't understand the joke in Jonas blog. This can only mean one thing: I have to watch them again now!

Vladislav Vaintroub (not verified)

Sat, 2012-02-18 17:05

"HandlerSocket, the first widely used NoSQL API for InnoDB based MySQL databases."
Any numbers of how widely it is used? More than 2 installations in production? more than 10?

In this context, "widely used" is more like "used at all outside the original creator". For instance a predecessor to HandlerSocket was MyCache, which was a memcached api but basically ended up just a proof of concept. HandlerSocket is included in Percona Server (and now MariaDB) and has been spoken about in conferences and webinars for two years. I consider it a part of those forks just like any other feature they ship.

In a last year post, i also explain how to get better then 300K qps with a regular MySQL and this was possible since 10 years!….

I would also point an implementation of NoSQL that really bring something new on the table just like memcache, sphinx such tools are excellent because they do something else where RDBM can not go by design, but make sure to understand the benefite of feature less storage engines with an API on TOP when planing for architecture changes. The issues introduce by such architectures are not that easy to solve, and yes the NDB Cluster team are expert in this for decade now.

When InnoDB read 3-4M records per secondes from a single query how much of REDIS nodes and API do produce the same result? And with how many latency lost on the network ? Now for simple get set agree that it can save you a lot of dev and REDIS is not the worth choice in the galaxy ....

Ah yes, your post a year ago is quite enlightening too.

I also think that people that use Redis and the likes probably are attracted to it for its simplicity. Those numbers are not bad, they are just not as good as you get with MySQL. Otoh if you want to stay away from SQL completely, it's probably a good choice. (In the youporn case though their master database is still MySQL, so I actually don't quite get the point...)

I created a benchmark in PHP to check whether REDIS is faster.
I ran it in a VM on my laptop. Nothing special was done to tune MySQL or REDIS, besides I set up them both to use UNIX sockets. In PHP, PDO was used to access MySQL and phpredis (written in C) to access REDIS.
I explored the possible optimizations:
Pipeline mode for REDIS and extended inserts for MySQL. Each batch was of 10k inserts. Total records count was 500k.
Hashmap was used in REDIS and 2-column table in MySQL.
MySQL(InnoDB) did the insert job about 3.5 times FASTER.

Then I benchmarked sum over 100k rows. MySQL performed about 20x FASTER. For REDIS I used eval with LUA script to do the computing as close as possible to the server.

Add new comment

The content of this field is kept private and will not be shown publicly. Cookie & Privacy Policy
  • No HTML tags allowed.
  • External and mailto links in content links have an icon.
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.
  • Use [fn]...[/fn] (or <fn>...</fn>) to insert automatically numbered footnotes.
  • Each email address will be obfuscated in a human readable fashion or, if JavaScript is enabled, replaced with a spam resistent clickable link. Email addresses will get the default web form unless specified. If replacement text (a persons name) is required a webform is also required. Separate each part with the "|" pipe symbol. Replace spaces in names with "_".
About the bookAbout this siteAcademicAmazonBeginnersBooksBuildBotBusiness modelsbzrCassandraCloudcloud computingclsCommunitycommunityleadershipsummitConsistencycoodiaryCopyrightCreative CommonscssDatabasesdataminingDatastaxDevOpsDrizzleDrupalEconomyelectronEthicsEurovisionFacebookFrosconFunnyGaleraGISgithubGnomeGovernanceHandlerSocketHigh AvailabilityimpressionistimpressjsInkscapeInternetJavaScriptjsonKDEKubuntuLicensingLinuxMaidanMaker cultureMariaDBmarkdownMEAN stackMepSQLMicrosoftMobileMongoDBMontyProgramMusicMySQLMySQL ClusterNerdsNodeNoSQLodbaOpen ContentOpen SourceOpenSQLCampOracleOSConPAMPPatentsPerconaperformancePersonalPhilosophyPHPPiratesPlanetDrupalPoliticsPostgreSQLPresalespresentationsPress releasesProgrammingRed HatReplicationSeveralninesSillySkySQLSolonStartupsSunSybaseSymbiansysbenchtalksTechnicalTechnologyThe making ofTungstenTwitterUbuntuvolcanoWeb2.0WikipediaWork from HomexmlYouTube