最近想把fastdb用于程序中,主要是需要在内存中update,并不需要insert很多数据。
使用fastdb默认参数在64位系统中生成的文件有67M,这对我来说有些浪费。
参考fastdb官网的manual, 提示修改dbDefaultInitDatabaseSize 缩小初始文件,但修改后并不起作用。
然后又修改database.h中dbDefaultInitIndexSize,dbDefaultExtensionQuantum等参数,也不起作用。
接下来我做了一个暴力修改,直接在 database.cpp: 2589 line 修改生成的文件大小。
fileSize = 1024 * 1024; !!!!!! just for test
_stprintf(databaseName, _T("%s.%d"), dbName, version);
int rc = file.open(fileName, databaseName, fileOpenFlags, fileSize, false);
这时修改生效了,但生成的文件是有问题的。
然后我直接给fastdb作者
knizhnik发了封求助邮件,在大神的指引下,
修改config.h,将大文件支持注释掉
//#if !defined(_WIN32) || defined(_WIN64) // most unixes are now 64-bit, while 32-bit windows is still quite popular
//#define LARGE_DATABASE_SUPPORT
//#endif
//#define LARGE_DATABASE_SUPPORT
//#endif
如果
dbDatabaseOffsetBits参数不是32,也将此参数设置为32.
然后重新编译, 问题解决! 生成的文件变成了8M。