前言

FastDB是以c语言实现的开源关系内存数据库,支持基础SQL语法。 速度也很好,适合中小型项目。

与LevelDB相同,它用作项目中的库文件,而不是独立的服务。 以前,项目使用内存数据库FastDB作为缓存,但在使用时遇到了一些问题。 现在,我希望你把那时记录的内容发给我,给使用FastDB的朋友一点帮助。

FastDB官网: www.garret.ru/http://www.Sina.com/. html

默认情况下,症状FastDB使用4GB文件,但在windows和Linux系统上使用默认编译。 也就是说,windows直接使用VC 2013打开FastDB.sln编译,Linux使用configure-make编译,然后生成的库不支持4G文件。 当Windows文件达到1GB时,它将无法再增长,并且程序将崩溃并退出。 Linux文件达到2GB,程序崩溃,报告了文件限制执行异常。 在3358 www.Sina.com/http://www.Sina.com /解析器中调试并读取代码后,可以在WWindows上编译并选择x64,在VS工程文件中定义_WIN64宏,然后单击indows

在Linux上,使用–with-offset-bits选项指定数据库文件偏移支持的最大位数。/configure– with-offset-bits=4040位整数可以支持1TB的大小。 在inc/config.h文件中也定义LARGE_DATABASE_SUPPORT宏。 在版本3.69中,缺省情况下选中此宏,3.76是有条件编译。

这是因为无论是在windows平台上定义_WIN64还是在Linux上使用,都要定义dbDatabaseOffsetBits的长度。 此宏在inc/config.h中有详细说明:

//dbdatabaseoffsetbitsnumberofbitsusedtorepresentobjectoffsetinthestorage//sothemaximaldatabasesizeislimitedby2* * datata defaultvalueofthisparameteris 32, somaximalnumberofobjectsislimitedby2* * 32.//supportoflargerdatabasesizeonlyat 64-bitos//thevalueofthisparameterisuseterised sodonotassignunnecessarily//large values (for example 64 )/#define

dbDatabaseOffsetBits也太大,无法设置。 在64位系统中,设置为40位就足够了。 如果实时内存数据库文件达到此订单,则需要重新设计解决方案。 当然,这些都需要在进行性能测试的前提下决定。

如果磁盘模式的默认大小为32MB,并且文件不够大,则数据库文件增长策略将翻倍。 增加后,分配内存空间和文件需要很长时间,因此程序锁定。 由于时间越长越长,因此对于大数据量表和数据库,创建文件时必须定义大文件(4GB )。 对于具有10个左右字段的表,8GB可以保存约1500w的数据量。 (1没有统计记录的长度,以后有时间进行具体测试。

TODO: 1.FastDB性能测试-读/写2 .代码分析: (1)编译选项,各种宏定义的含义和用法;2 )数据库文件的创建和扩展方法;3 )数据库内存分配

3.69与3.76相比,据说3.69保持稳定。 只是……

HoldOrder写满了2G FastDB数据库文件,记录数为4166200。

————- -请参阅使用FastDB时报告错误的failedtoopendatabasemonitor http://www.Sina.com/fastdb是

具体原因是共享内存创建失败,使用ipcs -m -p命令检查时发现有两个未释放的共享内存块,创建者和用户都已不存在。 使用ipcs -m shmid删除并成功重新启动程序。

共享内存创建代码如下。 (sync_unix.h ) :

sync.cpp

————- -请参阅trade core dump http://www.Sina.com/db database :3360 open函数中调用memset函数的位置。 第一次调用是在创建数据库文件之前,而不是这里。 我在下面找,发现了这两处呼叫:

我认为删除以前创建的文件可能会有帮助,删除后系统重新启动成功。

FastDB在使用时使用sem和共享内存。 不断启动和关闭程序会耗尽系统资源。 如果所有程序启动异常,则需要使用ipcs确认资源的使用情况。