berkeley db DB->close()

来源:互联网 发布:ios快速关闭蜂窝数据 编辑:程序博客网 时间:2024/04/24 18:44

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打开的情况下使用。



原创粉丝点击