ロック・ストラテジーおよびトランザクション分離設定は、アプリケーションのパフォーマンスに影響します。
詳しくは、ロック・マネージャーを参照してください。
キーがしばしば衝突する場合のマップの読み取りおよび書き込み操作には、ペシミスティック・ロック・ストラテジーを使用します。 ペシミスティック・ロック・ストラテジーは、パフォーマンスに最大の影響があります。
読み取りコミット済みおよび読み取りアンコミットのトランザクション分離
ペシミスティック・ロック・ストラテジーを使用する場合、Session.setTransactionIsolation メソッドを使用してトランザクション分離レベルを設定します。 読み取りコミット済み分離または読み取りアンコミット分離の場合、分離に応じて Session.TRANSACTION_READ_COMMITTED 引数または Session.TRANSACTION_READ_UNCOMMITTED 引数を使用します。トランザクション分離レベルをデフォルトのペシミスティック・ロックの振る舞いにリセットするには、Session.REPEATABLE_READ 引数を持つ Session.setTransactionIsolation メソッドを使用します。
読み取りコミット済み分離では、共有ロックの期間が短縮され、並行性が向上して、デッドロックの可能性が低くなります。この分離レベルは、トランザクションが、トランザクションの期間中、読み取り値が変更されないままである保証が不要な場合に使用してください。
アンコミット読み取りは、トランザクションがコミット済みデータを参照する必要がない場合に使用します。
オプティミスティック・ロックはデフォルト構成です。 このストラテジーはペシミスティック・ストラテジーと比較して、パフォーマンスおよびスケーラビリティーの両方において優れています。 アプリケーションが若干のオプティミスティック更新の失敗を許容でき、ペシミスティック・ストラテジーよりもパフォーマンスに優れている場合は、このストラテジーを使用します。 このストラテジーは、読み取り操作や、更新頻度の低いアプリケーションに最適です。
OptimisticCallback プラグイン
オプティミスティック・ロック・ストラテジーでは、キャッシュ・エントリーのコピーを作成し、必要に応じてそれらを比較します。エントリーのコピーには、クローン作成やシリアライゼーションが関係する可能性があるため、この操作はコストが高くつきます。 パフォーマンスをできる限り高速にするには、 非エンティティー・マップ用にカスタム・プラグインを実装してください。
詳しくは、キャッシュ・オブジェクトのバージョン管理と比較のためのプラグインを参照してください。
エンティティーに対するバージョン・フィールドの使用
エンティティーに対してオプティミスティック・ロックを使用している場合、@Version アノテーション、または、エンティティー・メタデータ記述子ファイルの同等の属性を使用します。バージョン・アノテーションを使用すれば、ObjectGrid で非常に効率的にオブジェクトのバージョンを追跡することができます。エンティティーにバージョン・フィールドがなく、エンティティーに対してオプティミスティック・ロックが使用されている場合、エンティティー全体がコピーされ、比較されます。
読み取り専用アプリケーションでは、ロックなしストラテジーを使用します。 ロックなしストラテジーではいかなるロックも取得せず、ロック・マネージャーも使用しません。 このため、このストラテジーは最も並行性、パフォーマンス、スケーラビリティーに優れています。