• berkery db果然是很快的

    2007-12-17 17:23

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://syre.blogbus.com/logs/12250299.html

    据说 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。

    引用地址:

    评论

  • session?
    其实很多论坛的头200条经常访问的数据都是用dbm存取的;
  • bdb是和你的程序运行在一个进程空间,和mysql相比当然性能不可同日而语了。呵呵
    【神仙】回复Tony Bai说:
    呵呵,而且bdb比mysql简单得多。
    2008-01-20 19:22:57
  • bdb,openLDAP。。。。

发表评论

您将收到博主的回复邮件
记住我