2011-07-09 1 views
1

我々は今、我々はトランザクションを使用しながら、パフォーマンスの違いを取得し、次のようにしているトランザクションを使用せずにいる、コアバークレー(dbbaseapi)と、既に処理された書き込み9つのlackレコード/ ReadCDRFileを使用している: -どのようにコアberkeletdb(dbapi)のトランザクションパラメータを設定すると、データベース環境でデータベースを維持するのに役立ちますか?

  1. を私たちが書きます/
    Operation No.of Rows Time 
    Write CDRFile 9,66,320 5.8 minutes 
    Read CDRFile 9,66,320 1.36 minutes 
    

    U - :(トランザクションに)セカンダリデータベース概念を用い

- :セカンダリデータベースの概念を実装するS-マックスCDRFileを読みます(トランザクションなし)セカンダリデータベースの概念を歌う: - (真)と、データベース内の同じ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の最初の2つのセクションを参照してください) )。

上記のように、耐久性制約を緩和することに加えて、別のトランザクションで1つのレコードを挿入するのではなく、同じトランザクションで複数の操作(挿入)を行うことでスループットを向上させることができます。 BulkはputMultiple API callを介してAPIを入力します(これにより、事前コールJNIのオーバーヘッドが削減されます)。

今後、OTNのBerkeley DBテクニカルforumでこれらの質問に迅速に回答することができます。

私は役立つことを願っています。

よろしく、

デイブ

関連する問題