performance benchmark : memcached vs Kyoto Tycoon

kt:

http://fallabs.com/kyototycoon/

 

说明:

1) 客户端服务端都是8核,千兆网卡

2) 表格横向是value的数据大小

3) 表格的值是每秒操作数

4) KC创建的是hash库

 

100B

1KB

10KB

100KB

1MB

KT写

35599

35075

34518

33189

30562

KT读

37939

40209

38095

38197

40518

KT删

39968

39541

39200

37091

37664

MEMCACHE写

28735

29394

28977

27382

27824

MEMCACHE读

30515

30931

30057

28968

30721

MEMCACHE删

32362

32278

31715

30609

32175

 

image

 

补充说明:

1) kt启用GC,开启memcache协议扩展,使用的是一套客户端。

2) 客户端测试的时候使用并行库,多线程操作。

3) value都是string,不涉及序列化反序列化操作

结论:

咋KT的性能比memcached还牛呢?而且,数据移除之后马上释放磁盘,不像Mongodb和MSSQL一样会占着文件,除非repair才会收缩。

 

但是,数据量多了情况会不会发生变化呢?(以下测试使用三台机器,也就是一台机器保存三分之一的数据)

我们来看下KT在每多100万数据量的时候,读写效率的情况,表格的值同样是每秒操作数:

 

0

1

2

3

4

5

6

7

8

9

KT写

21010

11660

6888

4409

3311

2637

2387

1855

1803

1590

KT读

26063

25241

26139

25931

25810

26062

26106

26055

25465

3208

image

结论:

读基本没有下降,写大幅下降,总数据量在千万(由于是三台机器,所以最多的一台机器数据量也只有500万)的时候相比空数据的时候只有10%的写入速度,不如Mongodb,而读取速度相比Mongodb占优。

最后一次读取效率大幅降低,此时之前保存的数据已经过时,考虑是否GC回收过期数据会影响读取效率?

 

最后补充一点吧:KT默认情况下memcache plugin没有支持gets,如果要批量获取的话可以直接使用get命令。

你可能感兴趣的:(performance)