感谢支持
我们一直在努力

HandlerSocket原理和性能测试

1.handlersocket原理


很久以前做的测试了,今天只是为了留个存底的地方,所以拿上来,有很多不严谨的地方望大家多多包涵,也可以留言更正我的错误,谢谢!


都说handlersocket速度不是一般的快,公司也想在这方面研究一番,顺便我也学习下mysql的原理,就做了这个测试:


在介绍handlersocket之前首先来看一下mysql的原理:


HandlerSocket


前端应用(php python…)通过用户名和密码连接到mysql服务器,在通过mysql的“中间层”进行语法分析和优化等,最后交给存储引擎(myisma和innodb等)。


那么我所理解的handlersocket是怎样的?


HandlerSocket


我是根据什么猜测(在没有看源代码之前,只能猜测),handlersocket在连接mysql时,不用输入用户名和密码,一定是跳过了验证阶段;handlersocket在执行“sql”语句时,也别具一格,为什么这么说,因为在handlersocket严厉,根本没有所谓的sql语句,他所执行的单纯的是调用函数,例如:


hs.get(‘huati’‘t_topic’, [“f_tid”“f_tname”],’13’)


在huati数据库,t_topic表查找主键等于13的f_tid和f_tname字段,有这句话可以看出来,完全是函数式的调用,这也省去了mysql的语法解析,也许是他快的主要原因吧!


关于handlersocket的详细架构,可能之后会补上,这里就不多说啦。直接进入测试阶段。

2.handlersocket测试


首先介绍下测试环境:


HandlerSocket


我用了两种语言python和php,为什么要用两种语言?之后会解释。


首先来看一下python用mysql方式连接和用handlersocket连接的性能差别


HandlerSocket


X:并发进程数  Y:每秒钟处理请求数


上图蓝色:mysql自身调用插入语句(insert);红色:handlersocket 插入时数据。两种方式的请求数均随着并发量的增加而增加,但handlersocket表现的更为明显。下面来看另一张图:


HandlerSocket


由于handlersocket有两种查询方式,所以我把两种(find和get)全部列出来,坐下比较,发现基本重合。这时觉得handlersocket没有网上说的那么神,随后研究了下原因,归结如下:主要原因可能是由于,python的mysql接口使用c写的,而我们安装的handlersocket接口使用python写的,这里的比较数据就完全没有可比性了,这也决定了我换用php再做一次测试:


HandlerSocket


HandlerSocket


到此为止,已经看到handlersocket的性能优越性,笔者现在质疑,为什么这么好的东西,应用范围那么小,目前所知道的也只有飞信再用,之后上网找到一句话,看后深有感触,基准测试是由一个对这个产品感兴趣的一方完成的话,内在的不信任感会油然而生。套用公司的一句话“我们不追求最先进的科技,只运用最稳定的技术”


3.总结


在以后所有测试中,不应该对任何测试产品抱有内心的崇拜,否则会让自己迷茫。


4.附录


如下是一部分测试数据


HandlerSocket

赞(0) 打赏
转载请注明出处:服务器评测 » HandlerSocket原理和性能测试
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏