DB對并發的支持
要讓Berkeley DB數據支持并發,就要創建Berkeley DB的環境(environment)
環境類是 DbEnv。要支持并發,在初始化DbEnv時要用DB_INIT_CDB、DB_INIT_MPOOL
兩個標致。
如下
DbEnv env;
env.open( "evn", DB_INIT_CDB|DB_INIT_MPOOL, 0 );
然后在創建數據庫時,將環境傳給數據庫。如下
Db bdb( &env, 0 );
這樣就可以支持并發了。
Berkeley DB并發的簡單原則
Berkeley DB的并發遵循的是允許同時多個讀操作,當只有一個寫操作。
1 每個游標有一鎖,非游標的讀寫用一鎖
2 寫操作等待所有的讀鎖解鎖。
3 讀操作不需要等待寫鎖解鎖。