今天早上看到了一篇文章《Using MySQL as a NoSQL - A story for exceeding 750,000 qps on a commodity server》。主要讲述的是把Mysql作为一个KVS和Memcache的一个对比。看到了一个新的思路。
开始的结果大概是Mysql的性能是Memcache的1/4,QPS是10w:42的样子。使用Mysql主要的消耗在解析SQL以及一些内部的同步处理。
然后提到了NDBAPI,这个能够大幅提高性能,但是需要用在NDB上--不过很多公司是不用NDB的。
最后提到了一个解决方案,是在Mysql Server上部署一个插件一样的东东,监听另外一个端口,走另外的协议。而这个插件内部,是直接不走MysqlServer的SQL解析等等过程的,直接走Storage Engine的API,也就是innodb的API。性能得到非常大的提升。
通过这个改造,QPS从10w达到了70w,已经超过memcache将近3/4。
文章具体地址是http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html,已经实现的代码,在文章中有下载链接。