クイック背景:私はアプリケーションの重要な部分を再設計しています。このアプリはデータベースからデータ/ DTOをキャッシュする大きなツリースタイルのデータ構造を持っています。大きなツリーの更新は、主に次の2つの方法で行われます。1.ユーザーがトリガーしたコマンド2.バックグラウンドで実行されたジョブからの自動更新。ロックのパフォーマンス:ロックの長さとロックの比較多くの場合、
いずれかの操作タイプ(ユーザ/自動)が発生すると、データ構造をロック(明示的にロック)しています。私は一貫性の問題に遭遇していたので、すべてをロックすると、キャッシュ内のデータの整合性を保護するのが最も理にかなったようでした。
質問:私は、任意のユーザードリブンの更新がトップにプッシュされ、最初に処理を受けるデータ構造、に命令を処理するために(多分JMS)キューのいくつかの種類を実装することを考えた後、多くの自動アップデートがで発生する可能性がありますので、 。自動 "タスク"のバルク/未知のサイズのセットを扱う場合、私はそれらを個別に実行してロックさせるか、時間をかけて一括してロックして一度ロックしようとするかを判断しようとしています。問題の真の要点は、更新するタスクのいずれかがツリー全体に影響する可能性があることです。
多くのトランザクションで大規模な更新が行われる可能性があります。大量の一括更新を試して結合し、1回だけロックするだけです。データの種類、更新の種類、頻度などが多分わかっています。「より頻繁にロックを小さくする」または「もっと長くする」という一般的なルールがあるかどうかはわかりませんでした。
はい。うーん。たぶんいいえ。おそらく多分。確かに、あなたの質問は広すぎると思います。 – GhostCat
@GhostCat私はそれが少し広すぎるかもしれないかもしれません。私はそれを少し狭めることができるかもしれない何らかの方法を考えることができますか?私はそれがdefであれば自分の投稿を閉じるのに問題はない。広すぎます。 – Walls
キャッシュポリシーとは何ですか?オブジェクトが必要以上に長くぶら下がっているか、ツリーサイズが増えているか、パフォーマンスに影響がありますか? –