トランザクション制御による効果
トランザクション制御の呼び出し (TransactionBegin、TransactionRollback、TransactionCommit) は、Domino コア内で強力かつ機密性の高い処理を呼び出します。
これらの呼び出しは、Domino サーバー操作の中心的なリソースであるトランザクションログの動作に影響を与えます。通常は循環するログの容量が限界になると、コミットまたはロールバックによって解消されるまでデータベースの更新ができなくなる可能性があります。
コミットの頻度を高め、トランザクション内での大量更新を避ける(例えば、大量の文書に対して NotesDocumentCollection.StampAll メソッドを使用しない)ことで、この問題を回避できます。
これらの呼び出しを使用するアプリケーション開発者は、Domino ディレクトリの Domino サーバー文書の [セキュリティ] タブにある [制限のないメソッドと操作の署名または実行] フィールドにリストされている必要があります。
トランザクション制御と他の Domino 処理との相互作用には次のものが含まれます。
- LotusScript の NotesView クラスは、コミットされていない更新が原因で例外 (NotesException: The collection is busy) を受け取ることがあります。この状態を回避するには、AutoUpdate を false に設定してください。
- ビュー検索を行う DQL クエリは、コミットされていないデータを検索しませんが、NSF スキャンが行われる場合は、コミットされていないデータを検索します。また、RefreshViews 属性は、ビューに含まれるコミットされていないデータには影響しません。ビュースキャンと NSF スキャンの不一致を回避するには、クエリの実行時または実行時に NoViews 属性を指定し、DQL エンジンがビューへのアクセスを回避するように強制します。
- トランザクション制御はインラインビュー更新と互換性がありません。トランザクションが開始され、更新が実行されると、データベースのインラインビュー更新は無効になります。現在、解決策はありませんが、HCL は将来のアップデートで解決策を提供する予定です。