Yoshinori Matsunobu
yoshinorimatsunobu.blogspot.com · Personal blog · on HN since 2010
Yoshinori Matsunobu is a MySQL engineer who writes about InnoDB performance, SSDs, high availability and using MySQL as NoSQL.
What HN saysCommenters cite his HandlerSocket post on 750,000 queries per second and his posts on MySQL performance and the case for bigger small data.
20HN people shared it
10linked it in comments
10stories submitted
522story points
4 years agolast shared
2010people per year2026
Most-shared posts
- 1Using MySQL as a NoSQL - A story for exceeding 750,000 qps on a commodity server9 people · 344 points · first shared 2010 · 31 comments on HN
- 2Why buffered writes are sometimes stalled2 people · 71 points · first shared 2014 · 14 comments on HN
- 3Making full table scan 10x faster in InnoDB1 people · 98 points · first shared 2013 · 20 comments on HN
- 4A New Take on MySQL Master High Availability1 people · 6 points · first shared 2011 · discussion on HN
- 5Using Mysql as Nosql1 people · 1 points · first shared 2013 · discussion on HN
- 6Another reason to disable MySQL performance schema1 people · 1 points · first shared 2013 · discussion on HN
- 7Using MySQL as NoSQL1 people · 1 points · first shared 2012 · discussion on HN
- 8Tables on ssd redobinlogsystem1 people · first shared 2012
- 9Using mysql as nosql story for1 people · first shared 2013
- 10Using mysql as nosql story for1 people · first shared 2022
- 11Towards bigger small data1 people · first shared 2021
What HN people wrote when they linked it
TY · 2011-04-17
Unfortunately, it's not that easy. Don't forget about the impact of SQL parsing and connection costs.
Here is a very illuminating post about it:
http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-st…
The authors created a MySQL plugin that served as a network server and hooked into InnoDB without SQL parsing overhead. It also avoided the cost of opening/closing tables by keeping them open.
According to their benchmark, performance went from 100,000 queries per second to 750,000 per second on the same server.
Well worth the read.
caseyf · 2012-08-19
Percona Server has lots of improvements (some small things and others that are pretty essential for me) On the SSD front, the main ones are:
* You can put the innodb doublewrite buffer on your spinning disks - that's the best place for it since it's heavy sequential writes. See section 2.2.2 here http://yoshinorimatsunobu.blogspot.com/2009/05/tables-on-ssd-redobinlo…
* The ability to tune various parts of innodb that were originally designed to perform well on regular disks - those with fast sequential access, slower random access, and no real wear considerations. See http://www.percona.com/doc/percona-server/5.1/scalability/innodb_io.ht…
Here's a recent post from Percona showing MySQL vs Percona server on an Intel 320 SSD:
http://www.mysqlperformanceblog.com/2012/02/23/percona-server-vs-mysql…
--
MariaDB is pretty nice too. Their team has introduced some sorely needed query optimizations (http://kb.askmonty.org/en/what-is-mariadb-53/#subquery-optimizations) and it does include Percona's XtraDB.
I haven't looked at MariaDB 5.5 to see how it compares to Percona Server 5.5. I put Percona Server into production last fall and MariaDB was still at 5.3 at the time.
samsquire · 2022-09-01
HandlerSocket is an interesting approach to turn MySQL into a NoSQL database and get 700,000 requests per second on a single node.
http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-st…
When I benchmarked Redis on an Intel hexacore I got 800,000 requests a second on 8 terminal windows. So I assume the MYSQL data fit in RAM.
throwdbaaway · 2021-01-26
One of those companies is facebook right? I think this blog post provides a much more balanced view: http://yoshinorimatsunobu.blogspot.com/2017/11/towards-bigger-small-da…
jamesblonde · 2019-07-09
The OP video describes a FS based on Innodb and MySQL. It gets relatively poor performance (7-9X slower for common FS ops). However, the killer FS ops for a DB are subtree operations - 'rm -rf', 'chown -R', 'chmod -R'. In research in this field, these are the operations that get less limelight but are most important for a working system.
I hazard a guess that the above implementation could still be made many times faster (maybe even 10X) by using InnoDB's native API, instead of the much slower MySQL Server SQL API. Here's an example of what you can achieve by going native - 1m ops/sec on InnoDB 8 years ago. This is the main guy (sorry Mark!) behind RocksDB implementation:
http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-st…
morgo · 2013-11-23
For context, the first NoSQL interface for MySQL was:
http://yoshinorimatsunobu.blogspot.ca/2010/10/using-mysql-as-nosql-sto…
(It's appeared on HN a few times).
The MySQL team decided to run with a more standard memcached interface, and MySQL actually embeds memcached to do this (with MySQL as backend storage).
Despite being read-only, the over 1M number highlights a lot work thats been done for multi-core scalability. This test was on a 48 score machine.. that was a distant dream a few years ago on MySQL 5.1.
mikeytown2 · 2011-12-12
Those benchmarks are very flawed as HandlerSocket only works in InnoDB. This is a better post on the subject: http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-st…
senko · 2011-09-21
InnoDB provides a schemaless datastore and can be used directly. A couple of results for a quick google search for "innodb nosql":
http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-st…
http://blogs.innodb.com/wp/2011/04/nosql-to-innodb-with-memcached/
teoruiz · 2010-12-20
There was a more detailed discussion about HandlerSocket in another thread:
http://news.ycombinator.com/item?id=1886137
Original article: http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-st…
thefreshteapot · 2011-04-06
Having now been exposed to both...
If you ever want to use it as a caching system ... solr is the way to go.
I personally think very highly of Sphinx, yet be aware that Sphinx will return ids not "content".
When handlesocket was announced [1], for me the gem other than the obvious was this nugget of information.
"No duplicate cache When you use memcached to cache MySQL/InnoDB records, records are cached in both memcached and InnoDB buffer pool. They are duplicate so less efficient (Memory is still expensive!). Since HandlerSocket plugin accesses to InnoDB storage engine, records are cached inside InnoDB buffer pool, which can be reused by other SQL statements."
Knowing that with the latest version of sphinx your can make use of their Query format via code or via the mysql console... it has me more sold on Sphinx than solr.
We use solr where I work, it is nice to use and coming features will make it better...
The most annoying aspect of solr for me is, you cant index elsewhere and easily merge it...
Either are miles better than fulltext search.
Perhaps list a few of your needs and requirements then we might be able to see if one stands out ahead of the other.
[1]http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-st…