mdbm和bdb

       简单的测试了一下mdbm和BerkeleyDB:往里面写一千万条记录,再全部遍历读一遍。读mdbm花了14秒,而读BerkeleyDB花了70秒,看来bdb确实比mdbm慢了许多,毕竟bdb只是把记录cache到内存,不像mdbm直接就把记录放在内存上(名副其实的内存数据库)。
       奇怪的是:bdb使用Hash索引比使用btree索引慢了三倍多!难道是Hash算法做的太差?不太可能吧....

       还特别发现了两个BerkeleyDB的工具db_load和db_dump,使用非常简便:
       db_dump url.bdb > url.dat              //从bdb导出为明文数据到url.dat
       db_load -f url.dat url_new.bdb         //从明文数据(必须是db_dump导出的格式)导入为bdb
       结果重新load的bdb变为原来bdb的三分之一大小了,仔细一看数据并没有变化,看来立中同志说的“BerkeleyDB为了快速写硬盘采用了比较浪费的格式,文件撑到了一定程度需要整理”非常正确,而这个dump&load也算是个离线整理数据的好办法。



相关文章

分类

5 Comments

xww said:

请问mdbm的源码能从哪儿拿到?我对dbm系列的数据库感兴趣,直接在google上搜索不到mdbm的源码,好像sgi的页面上有接口的说明,但找不到源码。
麻烦赐教!谢谢!

xww said:

我的邮箱:xww@sinfors.com.cn

DongHao Author Profile Page said:

很抱歉,mdbm是Yahoo公司开发的内部工具,源码是不公开的

thomas Author Profile Page said:

听某人说,mdbm是开源的。不知道他在哪里看见的源代码。哈哈哈

Novey said:

mdb全称memcachedb,是sina的人写的,在google code上有源码

留言:

关于文章

This page contains a single entry by DongHao published on 09 28, 2007 10:49 PM.

容易误导的编译提示 was the previous entry in this blog.

生意人 is the next entry in this blog.

Find recent content on the main index or look in the 存档 to find all content.