適用対象:SQL Server
この記事では、SQL Server Management Studio または Transact-SQL を利用し、SQL Server で locks サーバー構成オプション構成する方法について説明します。
locks オプションは、利用可能なロックの最大数を設定します。これにより、SQL Server データベース エンジンがロックのために使用するメモリ量が制限されます。 既定値は 0 です。0 の場合、 データベース エンジン はシステム要件の変更に基づいてロック構造を動的に割り当てたり、割り当てを解除したりできます。
重要
この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。
推奨事項
このオプションは高度なオプションであり、経験豊富なデータベースプロフェッショナルのみが変更する必要があります。
locks を 0 に設定してサーバーを起動すると、ロック マネージャーは 2,500 個のロック構造の初期プール用にデータベース エンジンから十分なメモリを取得します。 ロック プールがなくなると、プール用のメモリがさらに取得されます。
通常、データベース エンジンのメモリ プールから取得できるメモリよりも多くのメモリがロック プールに必要であり、より多くのコンピューター メモリが使用できる (max server memory (MB) のしきい値に達していない) 場合、データベース エンジンはメモリを動的に割り当ててロック要求に応じます。 ただし、そのメモリを割り当てることによって、オペレーティング システム レベルでページングが発生する場合、たとえば、別のアプリケーションが SQL Server のインスタンスと同じコンピューター上で実行されていて、そのメモリを使用している場合は、ロック用に割り当てを増やすことはできません。 動的なロック プールは、データベース エンジンに割り当てられたメモリのうち最大 60% まで取得できます。 ロック プールがデータベース エンジンのインスタンスによって取得されたメモリの 60% に達した場合、またはコンピューターで使用できるメモリがなくなった場合、さらにロック要求があるとエラーが発生します。
SQL Server が動的にロックを割り当てるように構成することをお勧めします。 ただし、locks を設定し、ロック リソースを動的に割り当てる SQL Server の機能をオーバーライドすることができます。
locks が 0 以外の値に設定されている場合、データベース エンジンは locks に指定された値よりも多くのロックを割り当てることができません。 SQL Server に使用可能なロック数を超えたことを示すメッセージが表示された場合は、この値を大きくします。 各ロックはそれぞれ 96 バイトのメモリを消費するため、この値を大きくした場合、状況によってはサーバー専用のメモリも増やす必要があります。
locks オプションも、ロックのエスカレートがいつ行われるかに影響を与えます。
locks を 0 に設定すると、現在のロック構造で使用されるメモリがデータベース エンジンのメモリ プールの 40% に達したときに、ロックのエスカレートが行われます。
locks が 0 に設定されていない場合は、ロック数が locks に指定された値の 40% に達したときに、ロックのエスカレートが行われます。
アクセス許可
パラメーターなしで、または最初のパラメーターだけを指定して sp_configure を実行する権限は、既定ですべてのユーザーに付与されます。 両方のパラメーターを指定して sp_configure を実行し構成オプションを変更したり RECONFIGURE ステートメントを実行したりするには、ALTER SETTINGS サーバーレベル権限がユーザーに付与されている必要があります。
ALTER SETTINGS 権限は、sysadmin 固定サーバー ロールと serveradmin 固定サーバー ロールでは暗黙のうちに付与されています。
SQL Server Management Studio の使用 [SQL Server]
オブジェクト エクスプローラーで、サーバーを右クリックし、 [プロパティ] をクリックします。
[詳細設定] ノードを選びます。
[並列処理]で、
locksオプションの目的の値を入力します。locksオプションは、使用可能なロックの最大数を設定して、SQL Server によってロックに使用されるメモリの量を制限するために使用します。
Transact-SQL の使用
データベース エンジンに接続します。
標準バーから、 [新しいクエリ] を選択します。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 この例では、 sp_configure を使用して
locksオプションの値を設定する方法を示します。使用できるロックの数をユーザー全体で20000に設定します。USE master; GO EXECUTE sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXECUTE sp_configure 'locks', 20000; GO RECONFIGURE; GO EXECUTE sp_configure 'show advanced options', 0; GO RECONFIGURE; GO
詳しくは、「サーバー構成オプション」をご覧ください。
補足情報:locks オプションを構成した後
設定を有効にするには、サーバーを再起動する必要があります。