表を作成したときのデフォルトのロック モードは、ページ ロックです。表を作成または変更するときに、または環境変数 IFX_DEF_TABLE_LOCKMODE または構成パラメータ DEF_TABLE_LOCKMODE を設定することにより、ロック モードを変更 (および、それにより同時実効性を向上または低下) できます。
ほとんどのアプリケーションには行のロック モードのほうが有利であるとすでにわかっている場合は、以下のいずれかの処置を行います。
- 各 CREATE TABLE 文、または各 ALTER TABLE 文で、LOCK MODE ROW 節を使用します。
- 環境変数 IFX_DEF_TABLE_LOCKMODE を ROW に設定します。これにより、セッション内で以降に作成するすべての表は、CREATE TABLE 文または ALTER TABLE 文にロック モードを指定しなくても、ROW を使用することになります。
- 構成パラメータ DEF_TABLE_LOCKMODE を ROW に設定します。これにより、データベース サーバ内で以降に作成されるすべての表は、CREATE TABLE 文や ALTER TABLE 文でロック モードを指定しなくても、ROW を使用することになります。
環境変数 IFX_DEF_TABLE_LOCKMODE または構成パラメータ DEF_TABLE_LOCKMODE を使用してロック モードを変更する場合、既存の表のロック モードには影響しません。既存の表は、作成時に定義されたロック モードをそのまま使用します。
さらに、表のロック モードを ROW に変更した後で、ALTER TABLE 文を使用して列を追加したり、エクステント サイズを変更するなど、表のその他の特性を変更する場合、ロック モードを指定する必要はありません。ロック モードは ROW のまま維持され、デフォルトの PAGE モードには設定されません。
CREATE TABLE 文または ALTER TABLE 文の LOCK MODE 節を指定すると、個別の表のロック モードを上書きすることができます。
次のリストに、表のロック モードの優先順位を示します。
- システム デフォルトは、ページ ロックです。構成パラメータが設定されていない場合、環境変数が設定されていない場合、または SQL 文の LOCK MODE 節が指定されていない場合、データベース サーバは、このシステム デフォルトを使用します。
- 構成パラメータ DEF_TABLE_LOCKMODE が設定されていて、環境変数が設定されていない場合、または SQL 文の LOCK MODE 節が指定されていない場合、データベース サーバは、この構成パラメータの値を使用します。
- 環境変数 IFX_DEF_TABLE_LOCKMODE が設定されている場合、この環境変数の値が、構成パラメータ DEF_TABLE_LOCKMODE およびシステム デフォルトより優先されます。SQL 文の LOCK MODE が指定されていない場合、データベース サーバはこの環境変数の値を使用します。
- CREATE TABLE 文または ALTER TABLE 文で LOCK MODE 節が指定されている場合、この値が、IFX_DEF_TABLE_LOCKMODE、構成パラメータ DEF_TABLE_LOCKMODE、およびシステム デフォルトより優先されます。