locks オプション

locks オプションは、使用可能なロックの最大数を設定して、データベース エンジンによってロックに使用されるメモリの量を制限するために使用します。既定値は 0 です。0 の場合、データベース エンジンはシステム要件の変更に基づいてロック構造を動的に割り当てたり、割り当てを解除したりできます。

重要な注意事項重要

この機能は、Microsoft SQL Server の将来のバージョンで削除されます。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションはできるだけ早く修正してください。

locks を 0 に設定してサーバーを起動すると、ロック マネージャは 2,500 個のロック構造の初期プール用にデータベース エンジンから十分なメモリを取得します。ロック プールがなくなると、プール用のメモリが追加取得されます。

通常、データベース エンジンのメモリ プールから取得できるメモリよりも多くのメモリがロック プールに必要であり、より多くのコンピュータ メモリが使用できる (max server memory のしきい値に達していない) 場合、データベース エンジンはメモリを動的に割り当ててロック要求に応じます。ただし、そのメモリを割り当てることによって、オペレーティング システム レベルでページングが発生する場合、たとえば、別のアプリケーションが SQL Server のインスタンスと同じコンピュータ上で実行されていて、そのメモリを使用している場合は、ロック用に割り当てを増やすことはできません。動的なロック プールは、データベース エンジンに割り当てられたメモリのうち最大 60% まで取得できます。ロック プールがデータベース エンジンのインスタンスによって取得されたメモリの 60% に達した場合、またはコンピュータで使用できるメモリがなくなった場合、さらにロック要求があるとエラーが発生します。

SQL Server が動的にロックを割り当てるように構成することをお勧めします。ただし、locks を設定し、ロック リソースを動的に割り当てる SQL Server の機能を無効にすることができます。locks が 0 以外の値に設定されている場合、データベース エンジンは locks に指定された値よりも多くのロックを割り当てることができません。使用可能なロック数を超えたことを示すメッセージが表示された場合は、この値を大きくします。各ロックはそれぞれ 96 バイトのメモリを消費するため、この値を大きくした場合、状況によってはサーバー専用のメモリも増やす必要があります。

locks オプションも、ロックのエスカレートがいつ行われるかに影響を与えます。locks を 0 に設定すると、現在のロック構造で使用されるメモリがデータベース エンジンのメモリ プールの 40% に達したときに、ロックのエスカレートが行われます。locks が 0 に設定されていない場合は、ロック数が locks に指定された値の 40% に達したときに、ロックのエスカレートが行われます。

locks オプションは拡張オプションです。sp_configure システム ストアド プロシージャを使用して設定を変更するには、show advanced options が 1 に設定されている場合にのみ locks を変更できます。この設定は、サーバーを再起動した後に有効になります。