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打開的情況下使用。