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也算是个离线整理数据的好办法。
奇怪的是: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也算是个离线整理数据的好办法。
相关文章
- BerkeleyDB删除数据时的“内存泄漏”问题 - 04 08, 2009
- fedora 9 小集 - 01 05, 2009
- 多线程调试 - 12 17, 2008
请问mdbm的源码能从哪儿拿到?我对dbm系列的数据库感兴趣,直接在google上搜索不到mdbm的源码,好像sgi的页面上有接口的说明,但找不到源码。
麻烦赐教!谢谢!
我的邮箱:xww@sinfors.com.cn
很抱歉,mdbm是Yahoo公司开发的内部工具,源码是不公开的
听某人说,mdbm是开源的。不知道他在哪里看见的源代码。哈哈哈
mdb全称memcachedb,是sina的人写的,在google code上有源码