locks (サーバー構成オプション) の構成

適用対象:SQL Server

このトピックでは、SQL Server で SQL Server Management Studio または Transact-SQL を使用して、locks サーバー構成オプションを構成する方法について説明します。 locks オプションは、使用できるロックの最大数を設定することによって、 SQL Server データベース エンジン がそのために使用するメモリの量を制限します。 既定値は 0 です。0 の場合、 データベース エンジン はシステム要件の変更に基づいてロック構造を動的に割り当てたり、割り当てを解除したりできます。

重要

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

このトピックの内容

はじめに

推奨事項

  • このオプションは詳細設定オプションであるため、熟練したデータベース管理者または認定された SQL Server プロフェッショナルだけが変更するようにしてください。

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

    通常、 データベース エンジン のメモリ プールから取得できるメモリよりも多くのメモリがロック プールに必要であり、より多くのコンピューター メモリが使用できる ( max server memory のしきい値に達していない) 場合、 データベース エンジン はメモリを動的に割り当ててロック要求に応じます。 ただし、そのメモリを割り当てることによって、オペレーティング システム レベルでページングが発生する場合、たとえば、別のアプリケーションが 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 を使用する

locks オプションを構成するには

  1. オブジェクト エクスプローラーで、サーバーを右クリックし、 [プロパティ] をクリックします。

  2. [詳細設定] ノードをクリックします。

  3. [並列処理] で、 locks オプションの目的の値を入力します。

    locks オプションは、使用可能なロックの最大数を設定して、 SQL Server によってロックに使用されるメモリの量を制限するために使用します。

Transact-SQL の使用

locks オプションを構成するには

  1. データベース エンジンに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。 この例では、 sp_configure を使用して locks オプションの値を設定する方法を示します。使用できるロックの数をユーザー全体で 20000に設定します。

USE AdventureWorks2022;  
GO  
sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE;  
GO  
sp_configure 'locks', 20000;  
GO  
RECONFIGURE;  
GO  

詳細については、「サーバー構成オプション (SQL Server)」を参照してください。

補足情報: locks オプションを構成した後

設定を有効にするには、サーバーを再起動する必要があります。

参照

RECONFIGURE (Transact-SQL)
サーバー構成オプション (SQL Server)
sp_configure (Transact-SQL)