Handler-Socket Plugin for MySQL – SQL的功能、NoSQL的性能
记得半年多前写过MySQL vs NoSQL ,且一直以来我比较坚持用数据库存储K/V数据,因为不只是对数据安全等能提供保障,主要是发现大部分系统的qps根本就没那么高,能上4k的水平已经很少了,这点MySQL完全可以满足,因为优化好的K/V请求,在MySQL的SQL层上能实现每核心5k左右的qps,而这一数据在HandlerSocket出来之后,得到了更大的提升。
HandlerSocket plugin for MySQL 已经出来一段时间了, 鉴于HandlerSocket和InnoDB的健壮、安全性, 可以预见HandlerSocket取代Memcached等NoSQL存储/Cache,已经是大势所趋。
HandlerSocket 是MySQL的一个插件,用于跳过MySQL的SQL层面,直接访问内部的InnoDB存储引擎,从而充分发挥InnoDB的性能优势;此外,InnoDB的ACID特性,可以保障数据的安全。
初步对比了下,HandlerSocket Plugin for MySQL性能跟Memcached差不多,原文中的测试数据显示更胜Memcached一筹,接下来准备跟ndbapi的性能进行对比测试,为系统构架提供参考。
approx qps server CPU util MySQL via SQL 105,000 %us 60% %sy 28% memcached 420,000 %us 8% %sy 88% MySQL via HandlerSocket 750,000 %us 45% %sy 53%
HandlerSocket源码地址:https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/
HandlerSocket的客户端:
HandlerSocket Client for Perl
HandlerSocket Client for Python
– ————————————-
update: 2011/04/08
在Dell R710 双四核 E5620 下,mysql版本为5.1.54,未修改任何源码,采用php的handler-socket扩展,测试结果稳定在33万+QPS,其中mysqld占用cpu约为50%
Related posts:
不知有没有在运营环境下用过的呢?我很想让网站采用它
我们在同意的R710机器上重新它的测试步骤,而且在fushionc卡上,我们只能得到20W的QPS。 而且percona的人做的实验的数据是每分钟75W, 所以对这个数据保留怀疑的态度.
值的注意的是我们同时关掉了计算校验并且crack了代码关掉了fsync.
能否提供测试脚本?
这个跟是否用ssd没关系,普通硬盘即可。只要将buffer pool设置足够大,能够将数据都buffer起来。
我是用嵌入式innodb测试的,CPU才能用到300%左右, 其他的CPU给网络部分是没啥问题的。但是即使这样QPS还是上不去,即使我们做了源码级别的很多优化,把spin_lock的开销都降下来了。
我是淘宝核心系统数据库组专门搞mysql和innodb引擎的开发和优化的。
嵌入式Innodb? 好像没有相应的实现方法吧?另外percona那边是60万出头,原作者是75万。
不知道你们的R710的硬件配置是什么
补充下,今天我用php的handler socket扩展测了下,Dell R710
稳定在33万QPS以上,MySQLD占用CPU在50%左右。