close(); 这段脚本从user表中取出来了" />
[$row + 0]; my $user_email= $res->[$row + 1]; my $created= $res->[$row + 2]; print "$user_name\t$user_email\t$created\n";}#4. closing the connection$hs->close();
这段脚本从user表中取出来了 user_name, user_email 和created字段。
[matsunobu@host ~]$ perl sample.plYukari Takeba yukari.takeba@dena.jp 2010-02-03 11:22:33
对于HandlerSocket,推荐使用persistent connection。以减少连接的次数。
HandlerSocket协议 is a small-sized text based protocol。
与memcached类似,可以使用telnet来获取数据。
[matsunobu@host ~]$ telnet 192.168.1.2 9998Trying 192.168.1.2...Connected to xxx.dena.jp (192.168.1.2).Escape character is '^]'.P0test user PRIMARY user_name,user_email,created010=110103Yukari Takeba yukari.takeba@dena.jp 2010-02-03 11:22:33
Benchmarking
测试环境:
CPU: Nehalem 8 cores, E5540 @ 2.53GHz
RAM: 32GB (all data fit in the buffer pool)
MySQL Version: 5.1.50 with InnoDB Plugin
memcached/libmemcached version: 1.4.5(memcached), 0.44(libmemcached)
Network: Broadcom NetXtreme II BCM5709 1000Base-T x 3
仍然使用上面的user表,数据大概100w行。
SQL语句为:
SELECT user_name, user_email, created FROM user WHERE userid=?
memcached和HandlerSocket的客户端代码都用C/C++编写。
所有的客户端程序都位于另外一台机器上。通过TCP/IP与MYSQL/memcached服务器连接。
测试结果如下:
approx qps server CPU util
MySQL via SQL 105,000 %us 60% %sy 28%
memcached 420,000 %us 8% %sy 88%
HandlerSocket 750,000 %us 45% %sy 53%
HandlerSocket比传统的mysql快了7.5倍,而且%us的cpu使用率为mysql的3/4。
说明SQL层还是相当耗时的。避开SQL层之后,性能得到了明显的提升。
HandlerSocket比memcached快了78%。而且%sy占用的cpu比memcached要少得多。
虽然memcached是一个优秀的产品,但是还有很大的提升空间。
花荣注:比如七夜就改写了memcached的部分代码。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-27116-5.html
挺好