据说 berkery db 在存储key-value形式的数据时速度很快,就实验了一下,拿bdb和mysql myisam比较了一下。
测试代码:
$max = 100000;
ini_set('display_errors', 1);
error_reporting(E_ALL);
$conn = mysql_connect('localhost', 'test', '.....');
mysql_select_db('test', $conn);
mysql_query('truncate table test_kv', $conn);
$t = microtime(true);
for($i = 0; $i < $max; $i++){
$key = 'key' . $i;
mysql_query("insert into test_kv(`key`,`value`) values('$key','$i')", $conn);
}
echo microtime(true) - $t, "\n";
$t = microtime(true);
for($i = 0; $i < $max; $i++){
$key = 'key' . $i;
$rs = mysql_query("select `value` from test_kv where `key`='$key'");
$row = mysql_fetch_row($rs);
}
echo microtime(true) - $t, "\n";
dl('dba.so');
//print_r(dba_handlers(i));
$db = dba_open('test.db', 'n', 'db4');
$t = microtime(true);
for($i = 0; $i < $max; $i++){
$key = 'key' . $i;
dba_insert($key, $i, $db);
}
echo microtime(true) - $t, "\n";
$t = microtime(true);
for($i = 0; $i < $max; $i++){
$key = 'key' . $i;
dba_fetch($key, $db);
}
echo microtime(true) - $t, "\n";
结果
12.7905659676
58.7637891769
1.14525485039
0.541149139404
前面两行是mysql的结果,后面两行是berkery db 4的结果,分别是插入100000条和读取100000条记录消耗的时间。 如果是存取key-value的数据,又不需要在服务器间共享的话可以考虑使用berkery db。
没有评论:
发表评论