DB->close()
#include <db.h>
int
DB->close(DB *db, u_int32_t flags);
db->close()方法关闭数据库,同时将缓存数据写入磁盘,关闭已经打开的游标,释放资源,关闭文件句柄。
尽管关闭数据库会关闭数据库下所有的游标,但是仍然强烈建议先关闭数据库中的所有游标,否则会导致打开的游标的资源无法回收。
关闭数据库之前,必须保证所有事务已经关闭。
因为bdb 数据库是cached in memory的 ,所以在关闭数据库前需要用db->sync()同步一次。
当主库是从库的索引的时候,必须从库全部关闭,再关闭主库。
当有多个线程同时在使用数据库句柄时,只能其中一个thread发起db->close()的调用。
成功关闭返回0,否则返回非0。
没有成功的情况下返回:DB_LOCK_DEADLOCK 或者 DB_LOCK_NOTGRANTED,这两个错误信息都与事务有关。
db->close()方法中的flags为0,但是也可以为标志位DB_NOSYNC,DB_NOSYNC强烈不建议使用,它指示着数据库不将缓存数据写入就关闭数据库。这个标志位的用处是在有事务的情况,同时应用程序会经常crash down,可以使用它。该标志位只能在有db_env打开的情况下使用。