软件开发: 12 2007存档
php可以通过dba_open系列函数直接操作4.x版本的berkeleydb数据文件。昨天发现在dba_insert的时候php报出了
Segmentation fault
的错误,当时bdb文件已经3G多了。先怀疑是bdb有大小限制,可我们用的是64位系统啊。于是改用c来操作bdb,写了11G的bdb文件都没有问题,最后才确认:装的php是32位下编译的php,它能顺利的在64位系统下直接运行,但写库就不能太大了,理论上来说不能超过4G,至于为什么3G就不行了,可能bdb的寻址有特殊要求吧。
解决这个问题也很简单,按key哈希开,分成16个bdb来存数据,这样单个文件就不会超过3G了。