作者注:memcached和HandlerSocket的性能都会受到网络IO的限制。
上面的测试是在3块千M网卡的环境下进行的。如果换成单网卡,HandlerSocket大概每秒处理260,000次查询,memcached每秒处理220,000次查询。
HandlerSocket的优势和特性支持很多类型的查询
PK肯定没问题
unique key也可以。
普通key也可以。
limit 语句也可以。
IN 也没问题。
INSERT/UPDATE/DELETE也没问题。
不过,一定要用到索引才行。
不使用索引的操作不被支持。 Operations that do not use any index are not supported。
详细说明看这里:
高并发
HandlerSocket employs epoll() and worker-thread/thread-pooling architecture,the number of MySQL internal threads is limited 。
所以放心地使用persistent connection吧。不会导致mysql connection太高的。
高性能
Not only HandlerSocket eliminates SQL related function calls, but also it optimizes around network/concurrency issues
HandlerSocket不仅避开了SQL层,而且优化了网络层,并解决了并发的一些问题。
更小的网络数据包
与mysql协议相比,HandlerSocket协议的数据包更简单更小。
从总体上来看,网络传输的数据量会减少。
Running limited number of MySQL internal threads
不会导致mysql connection太高。
Grouping client requests
当HandlerSocket接受到请求的时候,每一个处理线程都会收集尽可能多的请求,
然后一次把这些请求执行完毕,并返回数据。
看起来没什么神奇的,但是却可以大大地提升性能。
代价是每个请求的响应时间略微变长。
*** Can reduce the number of fsync() calls
*** Can reduce replication delay
至于详细情况,作者会再写其它文章。很期待。
No duplicate cache
我们使用memcached的时候,数据会同时缓存到innodb的buffer pool与memcached中。
算是重复的cache吧。
HandlerSocket自身没有缓存,它完全听从InnoDB storage engine。
No data inconsistency
缓存的一大问题就是数据何时过期。
HandlerSocket没有缓存,也就不存在这种问题。
Crash-safe
InnoDB还是相当可靠的。
innodb-flush-log-at-trx-commit=1 加上这句就更保险了。
最多会丢失死机前1秒内的数据。
SQL can be used from mysql clients
我们仍然可以使用SQL语句进行复杂的查询。
确实方便很多啊。
All operational benefits from MySQL
HandlerSocket作为插件运行于mysql内部,所以mysql的操作,比如SQL, 热备份,主从,Nagios监视等等,都是支持的。handlersocket
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-27116-7.html
想在南海找回
炒白菜