ロック (ツール/API)
背景情報
マルチプロセス・システムでの重要な機能の 1 つに並行処理の制御があります。これは、異なるプロセスがデータの特定の要素を同時に変更し、破損に至ることを防止する機能です。したがって、ObjectScript および InterSystems SQL では、それぞれ並行処理制御に使用するロックを操作するためのコマンドが用意されています。
%PersistentOpens in a new tab では、オブジェクトへの同時アクセスを制御する手段が提供されています。すなわち、このクラスの %OpenId() およびその他のメソッドの concurrency 引数です。それらのメソッドは、最終的には ObjectScript LOCK コマンドを使用します。すべての永続オブジェクトは、それらのメソッドを継承します。
メモリ内のロック・テーブルは初期状態で、現在のロックと、それらのロックを保持するプロセスに関する情報を含んでいます。管理ポータルを使用して、ロック・テーブルを表示したり、必要に応じてロックを削除します。"ロックの監視" を参照してください。
ロックの詳細は、"ロックと並行処理の制御" を参照してください。
使用可能ツール
インターシステムズでは、以下のツールも提供しています。
ロックの表示および削除が可能です。"ロック・テーブルの管理" を参照してください。
可用性 : %SYS ネームスペース。
ロック・テーブル情報の読み込みを可能にします。このクラスでは詳細情報と例が提供されています。
可用性 : 全ネームスペース。
ロックを削除できます。また、ロック・テーブル・パラメータをクエリおよび調整できます。このクラスは、以下のようなメソッドを提供します。
-
DeleteOneLock()
-
GetLockSpaceInfo()
-
SetMaxLockTableSize()
-
その他
可用性 : %SYS ネームスペース。
ロックを削除するのではなく、ベスト・プラクティスとして、ロックを作成したプロセスを特定し、それを終了します。ロックを削除すると、そのロックの目的によっては、システムに重大な影響を与える可能性があります。