memcached VS Tokyo Tyrant
フリーのデータベースソフトのベンチマークの,追加実験を一件加えました.
シンプルなクエリに対する高速なDBは - なぜか数学者にはワイン好きが多い
前回の結果に,ネットワークかつファイルベースのTokyo Tyrantをベンチに加えました.
- アクセスにネットワークを通す場合(ハブ経由で他のマシンにアクセスに行く場合)
MYSQL+MYISAM | MEMCACHED | Tokyo Tyrant | |
処理時間 | 636秒 | 15秒 | 18秒 |
- アクセスにネットワークを通す場合(127.0.0.1を使って自分のマシンにアクセスに行く場合)
MYSQL+MYISAM | MEMCACHED | ToKyot Tyrant | |
処理時間 | 294秒 | 4秒 | 5秒 |
<?php dl('memcache.so'); error_reporting(E_ALL); define("MAX_LINE",100000); $memcache = new Memcache; $memcache->connect('localhost', 1978); $start_time = time(); for($i=0;$i<MAX_LINE;++$i) { $key = sprintf("%010d",$i); $obj = new stdClass; $obj->str_attr = $key; $memcache->set($key, $obj, false, 0) ; } for($i=0;$i<10000;++$i) { $q = sprintf("%010d",mt_rand(0,MAX_LINE-1)); // print_r($q."\n"); $result = $memcache->get($q); // print_r($result); } $end_time = time(); printf("time=%d\n",$end_time-$start_time); $result = $memcache->flush(); ?>
感覚的には,1万件や10万件のハッシュレコードだと,memcacheだろうがTokyo Tyrantだろうが変わらない気配.MySQLだと一桁か二桁違いますが.
結論として,速そう!Tokyo Tyrant!ということで.
しかもBerkeleyDBやQDBMと違って,複数のマシンからネットワーク経由で共有ストレージとして使えますし.