maxlocks - エスカレーション前のロック・リストの最大パーセント構成パラメーター

このパラメーターは、アプリケーションが保持するロック・リストのパーセンテージを定義します。これに達するとデータベース・マネージャーがロック・エスカレーションを実行します。

構成タイプ
データベース
パラメーター・タイプ
  • オンラインで構成可能
  • Db2® pureScale® 環境のメンバーによってオンラインで構成可能
デフォルト [範囲]
自動 [1 - 100 ]
注: デフォルト値は、初期データベース作成後に Db2 構成アドバイザーによって変更される場合があります。
単位
パーセンテージ

ロック・エスカレーションは行ロックを表ロックに置き換える処理であり、リスト内のロック数が削減されます。 ある 1 つのアプリケーションによって保持されているロックの数 が、合計ロック・リスト・サイズに対してこのパーセントに達すると、そのアプリケーションに よって保持されているロックに関してロック・エスカレーションが行われます。 ロック・リストが スペースを使い尽くした場合も、ロック・エスカレーションが発生します。

データベース・マネージャーは、アプリケーションのロック・リストを調べ、行ロック数が最も多い表を検索 して、ロック・エスカレーションの対象となるロックを判別します。 行ロックを単一の表ロックで 置き換えた後、maxlocks 値を超えることがなくなっていれば、ロック・ エスカレーションは停止します。 そうならない場合は、保持されているロック・リストのパーセンテージが maxlocks の値より低くなるまで、ロック・エスカレーションは続きます。 maxlocks パラメーター に maxappls パラメーターを掛けた値が 100 より小さな値であってはなりません。

このパラメーターは、AUTOMATIC に設定されると、セルフチューニングが使用可能になります。 これによってメモリー・チューナーは、このパラメーターによって制御されるメモリー領域のサイズを、ワークロード要件の変化に応じて動的に変更できるようになります。 メモリー・チューナーは異なるメモリー・コンシューマーの間でメモリー・リソースをやりとりするので、セルフチューニングをアクティブにするためには、少なくとも 2 つのメモリー・コンシューマーのセルフチューニングが使用可能になっていなければなりません。

maxlocks パラメーターと一緒に locklist の値をチューニングできますが、locklist パラメーターのセルフチューニングを使用不可にしても、maxlocks パラメーターのセルフチューニングが自動的に使用不可になるわけではありません。 locklist パラメーターのセルフチューニングを使用可能にすると、maxlocks パラメーターのセルフチューニングも自動的に使用可能になります。

この構成パラメーターの自動チューニングは、セルフチューニング・メモリーがデータベースに対して使用可能なとき (self_tuning_mem 構成パラメーターが ON に設定されているとき) にのみ行われます。

すべてのプラットフォームで各ロックはロック・リストの 128 バイトまたは 256 バイトが必要ですが、これは他のロックがオブジェクトで保持されているかどうかによります。
  • 他のロックを保持しないオブジェクトでロックを保持するには 256 バイトが必要です。
  • 既存のロックが保持されているオブジェクトでロックを記録するには 128 バイトが必要です。
推奨: 次の数式を使用すると、アプリケーションが 平均ロック数の 2 倍のロックを保留できるように、maxlocks を 設定できます。
   maxlocks = 2 * 100 / maxappls
ただし、平均の 2 倍を達成するために 2 が使用され、100 は 許容最大パーセント値を表します。 同時に実行するアプリケーションの数が少ない 場合は、上記の数式に代えて次の数式を 使用できます。
   maxlocks = 2 * 100 / (average number of applications running 
concurrently)
maxlocks を設定する際の考慮事項の 1 つは、ロック・リスト (locklist) のサイズと組み合わせて使用することです。 ロック・エスカレーションが発生する前にアプリケーションが保持するロック数の実際の限度は、以下のとおりです。
  • maxlocks * locklist * 4096 /(100 * 128)

ここで 4096 は 1 ページのバイト数、100maxlocks に許容される最大パーセント値、128 は 1 ロック当たりのバイト数です。 例えば 1000 ロックが必要なアプリケーションでロック・エスカレーションを起こしたくない場合、この公式で 1000 より大きな値となる maxlockslocklist を選択します。 ( maxlocks の場合は 10locklistの場合は 100 を使用すると、この式の結果は必要な 1000 ロックより大きくなります。)

maxlocks の設定が低過ぎると、他の同時アプリケーションにまだ十分の ロック・スペースがあるときに、ロック・エスカレーションが行われます。 maxlocks の設定が高すぎると、いくつかのアプリケーションがロック・スペースの大部分を消費する可能性があり、他のアプリケーションはロック・エスカレーションを実行する必要があります。 この場合にロック・エスカレーションが必要になるということは、 並行性が低下する結果になります。

データベース・システム・モニターを使用すると、この構成パラメーターの追跡および調整ができます。