セマンティック wiki のようなプロジェクトのバックエンドとして db4o を使用しています。私の主な関心事は、なぜパフォーマンスが非常に低いのかということです。
コンテキストは次のとおりです。
アプリケーションは、openJdk6 & db4o-v8.1 を使用します。モデルは、継承の 4 つのレベルで約 20 のクラスであり、アクティブ化可能なコレクション、参照、uuid、インデックスなどがあります...
sys-time ログを使用することで、オブジェクトの操作の一部に時間が費やされていることがわかりました。30 回のアクティブ化または更新の場合、アプリケーションは平均で 1.1 秒かかりました (コミット時に 1Kb 未満のデータ)。メモリ (ダンプ) を確認しましたが、透過的なアクティベーションから予想されるように、グラフのほんの一部が負荷 (私のデータベースは約 20K オブジェクトと 20Mb) です。私はクエリをほとんど使用せず、常にリレーションのアクティブ化を使用します。
同じホストでクライアントサーバーを使用しています。db-server は、db4o Web サイトで見つけることができる例です。クライアントサーバーはパフォーマンスをいくらか低下させますが、並行性のために必要です。ホストは、約 300iops を有効にする FC ストレージに依存しています。
- パフォーマンスを改善し、待ち時間を短縮するにはどうすればよいですか?
- 私は何かが恋しいですか?
- 私が知っておくべきトリックはありますか?