ロックパス

設定 > データベース > データベース特性

RDBMSを使用してデータにアクセする時、Magicはデータの物理位置を認識していません。データがリモートのホストマシンにあっても、ローカルデータとして処理されます。この場合には、Magicのロック機能は働きません。この機能では、同じデータにアクセスする全てのユーザが同一のロックファイルを共有している必要があるためです。

Ver8では、テーブルロックは、プログラムのアクセスモードと共有モードの設定([プログラム]リポジトリの[DB テーブル])によって決まりました。このため、マルチユーザによりアクセスが実行されるオンライン環境では、アクセスモードと共有モードの設定によっては、タスクの実行中はテーブルがロックされてしまうということが発生しました。この問題は、データベースがSQL の場合は改善されています。つまり、DBMS のテーブルロック機能を使用することで、ロック時間を縮小することができるようになりました。

Magic ロックを「N=なし」または「R=レコード」にしておくと、Magic によるテーブルレベルのロックは実行されません。この場合、DBMS によって実行されるトランザクションの種類によって、テーブルの共有モードが決まります。したがって、DBMS の保護書込トランザクションを使用したい時には、Magicロックを「N=なし」または「R=レコード」にしておきます。

この特性を「R=レコード」または「B=両方」に設定しておくと、レコードロックについても、データベースのロックメカニズムに加えて、Magic の内部ロックメカニズムも使われるようになります。この場合、データベースにアクセスする全てのユーザによって共同で使用されるディレクトリを指定しなければなりません。このディレクトリは、この[ロックパス]特性で指定します。

この[ロックパス]特性は、他の関連パラメータ全てに優先されます。

ここでロックパスを指定した場合、データベースのロックは、そのパス上にあるロックファイルにしたがって行われるようになります。また、ロックパスを指定する場合、そのパスは、テーブルにアクセスを実行するユーザ全てが使用できなければなりません。さもなければ、データの競合が発生する危険が生じます。

この値には論理名を指定できます。 この特性はオプションです。

参照