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