locks (Option)

Mithilfe der Option locks können Sie die maximale Anzahl verfügbarer Sperren festlegen und so die Menge an Arbeitsspeicher begrenzen, die Datenbankmodul für Sperren verwendet. Die Standardeinstellung ist 0. Dadurch kann Datenbankmodul je nach Systemanforderungen Sperrstrukturen dynamisch zuordnen oder die Sperrenzuordnung aufheben.

Wenn der Server mit einer Einstellung von 0 für locks gestartet wurde, reserviert sich der Sperren-Manager ausreichend Arbeitsspeicher von Datenbankmodul für einen anfänglichen Pool von 2.500 Sperrstrukturen. Wenn der Pool ausgeschöpft ist, wird zusätzlicher Arbeitsspeicher für den Pool reserviert.

Wenn für den Sperrenpool mehr Arbeitsspeicher benötigt wird, als im Arbeitsspeicherpool von Datenbankmodul vorhanden ist, und weiterer Arbeitsspeicher auf dem Computer zur Verfügung steht (der Schwellenwert max server memory wurde noch nicht erreicht), wird der Arbeitsspeicher entsprechend den Sperranforderungen von Datenbankmodul dynamisch zugeordnet. Wenn jedoch das Zuordnen dieses Arbeitsspeichers ein Auslagern auf Betriebssystemebene verursachen würde, wird kein zusätzlicher Speicherplatz für Sperren zugeordnet. Dies ist z. B. der Fall, wenn eine andere Anwendung auf demselben Computer wie eine Instanz von SQL Server ausgeführt wird und diesen Arbeitsspeicher beansprucht. Der dynamische Sperrenpool verwendet nicht mehr als 60 % des Arbeitsspeichers, der Datenbankmodul zugeordnet ist. Wenn der Sperrenpool 60 % des für eine Instanz von Datenbankmodul abgerufenen Speichers erreicht hat oder auf dem Computer kein weiterer Arbeitsspeicher zur Verfügung steht, führen weitere Anforderungen für Sperren zu einem Fehler.

Wenn in SQL Server Sperren dynamisch verwendet werden können, entspricht dies der empfohlenen Konfiguration. Sie können jedoch die Option locks festlegen und damit die Fähigkeit von SQL Server zum dynamischen Zuordnen von Sperrenressourcen außer Kraft setzen. Wenn locks auf einen Wert größer 0 festgelegt ist, kann Datenbankmodul nur die durch den Wert für locks festgelegte Anzahl von Sperren zuordnen. Erhöhen Sie diesen Wert, wenn SQL Server eine Meldung anzeigt, dass Sie die Anzahl der verfügbaren Sperren überschritten haben. Da jede Sperre Arbeitsspeicher beansprucht (96 Bytes pro Sperre), kann es erforderlich sein, dass Sie durch Erhöhen dieses Wertes auch die Menge an Arbeitsspeicher erhöhen müssen, die für den Server reserviert ist.

Die Option locks hat auch Auswirkungen auf eine Sperrenausweitung. Wenn locks auf 0 festgelegt ist, tritt die Sperrenausweitung auf, sobald der von den aktuellen Sperrstrukturen verwendete Arbeitsspeicher 40 % des Speicherpools von Datenbankmodul erreicht. Ist der Wert für locks nicht auf 0 gesetzt, tritt die Sperrenausweitung auf, wenn die Anzahl der Sperren 40 % des für locks angegebenen Wertes erreicht.

Bei locks handelt es sich um eine erweiterte Option. Wenn Sie die Einstellung für locks mithilfe der gespeicherten Systemprozedur sp_configure ändern, muss die Konfigurationsoption show advanced options auf 1 festgelegt sein. Die Einstellung tritt nach dem Neustart des Servers in Kraft.

Auf Computern, die NUMA (Non-Uniform Memory Access) verwenden, erfolgt die Sperreinstellung pro NUMA-Knoten. Eine Einstellung von 10.000 auf einem Computer mit vier Knoten ermöglicht daher 40.000 Sperren. Die Anzahl von NUMA-Knoten kann durch Verwendung der folgenden Abfrage bestimmt werden:

SELECT COUNT(DISTINCT parent_node_id)
FROM sys.dm_os_schedulers 
WHERE parent_node_id <> 32

Siehe auch

Konzepte

Sperren und Zeilenversionsverwaltung
Sperrenausweitung (Datenbankmodul)
Festlegen von Serverkonfigurationsoptionen

Andere Ressourcen

RECONFIGURE (Transact-SQL)
sp_configure (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005