berkeley db果然是很快的

据说 berkeley 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的结果,后面两行是berkeley db 4的结果,分别是插入100000条和读取100000条记录消耗的时间。 如果是存取key-value的数据,又不需要在服务器间共享的话可以考虑使用berkeley db。

6 thoughts on “berkeley db果然是很快的

  1. 卡斯 November 1, 2010 / 1:18 pm

    我也不知道怎么用。不知道老大还在研究没?

  2. 无痕 June 12, 2009 / 5:51 pm

    看了以后 还是不明白 berkeley db 怎么用

  3. 小黑米 September 26, 2008 / 9:43 pm

    看了 张宴的< 用Tokyo Tyrant构建兼容Memcached协议、支持故障转移、高并发的分布式key-value持久存储系统[原创] >
    我在使用tokyotrant的时候没法设置缓存的过期时间,请问下您的也是么?

  4. Che Dong May 9, 2008 / 9:22 pm

    session?
    其实很多论坛的头200条经常访问的数据都是用dbm存取的;

  5. Tony Bai January 20, 2008 / 9:56 am

    bdb是和你的程序运行在一个进程空间,和mysql相比当然性能不可同日而语了。呵呵

  6. duan December 26, 2007 / 1:07 pm

    bdb,openLDAP。。。。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s