2

アプリケーションの一部として、Jackrabbit (1.6.4) を使用してドキュメントを保存しています。アプリケーションによって取得された各ドキュメントは、存在しない場合は作成される Jackrabbit のフォルダー構造に配置されます。

当社の DBA は、Jackrabbit スキーマを保持する Oracle (11.2.0.2.0) データベースに対して次のクエリが頻繁に実行されていることに気付きました。実際、これは経過時間に対する IO の点で上位 5 つの SQL ステートメントの 1 つです (97% IO)。

    select BUNDLE_DATA from VERSION_BUNDLE where NODE_ID = :1

データベースを見ると、このテーブルには最初は 1 つのレコードしか含まれていないことがわかります。このレコードはnode_id、値を持つ (データ型 RAW) キーとBLOB 列DEADBEEFFACEBABECAFEBABECAFEBABEの数バイトで構成されています。bundle_data後で、追加のデータを含むレコードが追加されます。

テーブルの SQL は次のようになります。

CREATE TABLE "VERSION_BUNDLE"
(    
    "NODE_ID" RAW(16) NOT NULL ENABLE,
    "BUNDLE_DATA" BLOB NOT NULL ENABLE
);

次の質問があります。

  • Jackrabbit がこのテーブルに頻繁にアクセスするのはなぜですか?
  • これを高速化する Jackrabbit のチューニング オプションはありますか?
  • 値はBUNDLE_DATAJackrabbit によってまったく変更されますか?それとも、リポジトリへのアクセスごとに読み取られるだけですか?
  • このシナリオをより適切に処理できるようにデータベース スキーマを調整する方法はありますか?

更新: テーブルには最初は 1 つのレコードしか含まれていません。追加のレコードは、Jackrabbit によって内部的に決定されたように、時間の経過とともに追加されます。挿入または更新ステートメントが高い数で実行されていると報告されていないため、ほとんどの場合、アクセスは依然として読み取り専用のようです。

4

4 に答える 4

2

これは物理 I/O ですか、論理 I/O ですか? データが読み取られると、物理 I/O が必要になるのに十分な速さでブロックがキャッシュからエージング アウトされていることに驚かされることがよくあります。

于 2012-06-11T12:03:39.970 に答える
1

JCR-Store が Oracle データベースに基づいている場合は、基礎となるテーブルを再編成できます。

  1. インデックス アクセスを防ぐために、そのテーブルのハッシュ クラスターを構築します。
  2. パーティション分割オプションを使用するライセンスがあるかどうかを確認します
  3. アプリケーション行の不要なバージョンを削除すると、削除されます (バージョン削除)

写真やドキュメントなどのバイナリ オブジェクトを格納している場合は、VERSION_BINVAL も参照してください。

于 2016-03-01T18:16:17.363 に答える
1

Jackrabbit がこのテーブルに頻繁にアクセスするのはなぜですか?

次に、リポジトリにバージョンを作成していることを示します。それはあなたのアプリケーションがすべきことですか?

これを高速化する Jackrabbit のチューニング オプションはありますか?

私が知っているわけではありません; 調査するオプションの 1 つは、より新しい Jackrabbit バージョンにアップグレードすることです。バージョン 2.4.2がリリースされたばかりで、1.6.4 はほぼ 2 年前のものです。これらのリリース間でパフォーマンスが改善された可能性があります。

BUNDLE_DATA の値は Jackrabbit によってまったく変更されていますか? それとも、リポジトリへのアクセスごとに読み取られるだけですか?

見た目では、ルート リポジトリ ノードの GUID です。

このシナリオをより適切に処理できるようにデータベース スキーマを調整する方法はありますか?

私の知る限り、スキーマは Jackrabbit によって自動生成されるため、唯一のオプションは、作成後に互換性のある方法でテーブル定義を変更することです。しかし、それは DBA のトピックであり、私はそうではありません。

于 2012-06-11T13:02:39.473 に答える