2011-07-09 26 views
1

我們正在使用的核心伯克利(dbbaseapi),並已經處理的寫入/ ReadCDRFile 9個lack記錄,現在我們在性能越來越差,同時使用事務和不使用事務,內容如下: -如何設置核心berkeletdb(dbapi)中的事務參數幫助維護數據庫環境中的數據庫?

  1. 我們寫/閱讀S-MAX CDRFile實施輔數據庫的概念: -

使用輔助數據庫概念(有交易): -

Operation No.of Rows Time 
Write CDRFile 9,66,320 5.8 minutes 
Read CDRFile 9,66,320 1.36 minutes 

ü唱輔助數據庫概念(無交易): - 在environConfig.setTransaction(真),並在數據庫中使用相同

Operation No.of Rows Time 
Write CDRFile 966320   3.27 minutes 
Read CDRFile 966320   1.28 minutes 

我們已經設置參數。

Transaction txn = databaseEnv.getDbEnv().beginTransaction(null, null); 

,並傳遞到這裏: -

databaseEnv.getCdrDb().put(txn, thekey, theData); 

這樣的答覆是如何交易數據庫和環境

回答

0

從隨後,你已經問的問題在內部使用,它聽起來就像你超越了這個最初的問題。爲了記錄,當爲事務配置時,BDB執行對事務日誌的寫入操作,以便在應用程序或系統崩潰時提供可恢復性(在沒有事務的情況下使用BDB時自動恢復不可用)。

使用事務時,默認情況下,BDB將一直等到事務完全寫入磁盤(請參閱Getting started with Transactions的前兩部分以獲取有關事務持久性以及如何通過放寬持久性約束來增加吞吐量的更多信息)。

除了放寬持久性約束,如上所述,還可以通過以下方式提高吞吐量:a)在同一個事務中包含多個操作(插入),而不是在單獨的事務中插入單個記錄,以及b)通過putMultiple API call的批量put API(這將減少預JNI調用開銷)

在將來,這些問題可能會更迅速地回答了OTN上的Berkeley DB的技術forum

我希望有幫助。

問候,

戴夫