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