天天看點

berkeley db DB->close()

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