Sperrenausweitung

Die Sperrenausweitung ist der Vorgang, bei dem viele differenzierte Sperren, wie z. B. eine Zeilensperre, in eine kleinere Anzahl von undifferenzierten Sperren, wie z. B. eine Tabellensperre, konvertiert werden. Die Sperrenausweitung vereinfacht die Systemverwaltung.

Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) weitet Zeilen- und Seitensperren automatisch zu Tabellensperren aus, wenn eine Transaktion den entsprechenden Schwellenwert für die Ausweitung überschreitet. In SQL Server Compact 3.5 ist die Sperrenausweitung von der Zeilen- zur Tabellenebene oder von der Seiten- zur Tabellenebene möglich, aber nicht von der Zeilen- zur Seitenebene. Wenn die Ausweitung auf Tabellenebene erfolgt, sind für eine Sperre unter der Tabellenebene keine Anforderungen mehr möglich.

Wenn z. B. eine Transaktion Zeilen aus einer Tabelle anfordert, wendet SQL Server Compact 3.5 automatisch Sperren für die betroffenen Zeilen und beabsichtigte Sperren auf höherer Ebene für die Seiten und die Tabelle an, in denen diese Zeilen enthalten sind. Die zugehörigen Indexseiten werden ebenfalls gesperrt. Wenn die Anzahl von Sperren, die die Transaktion eingerichtet hat, den Schwellenwert übersteigt, versucht SQL Server Compact 3.5, die beabsichtigte Sperre auf der Tabelle in eine restriktivere Sperre zu ändern. So kann z. B. eine beabsichtigte exklusive Sperre (IX) in eine exklusive Sperre (X) geändert werden. Nach dem Einrichten der restriktiveren Sperre werden alle Sperren auf Seiten- und Zeilenebene aufgehoben, die von der Transaktion auf die Tabelle angewendet wurden.

Die Sperrenausweitung erfolgt jeweils für eine Tabelle, wenn durch die Anforderung einer Sperre der entsprechende Schwellenwert für die Ausweitung überschritten wird. Alle Sperren unter der Tabellenebene werden unabhängig vom Typ auf den Schwellenwert angerechnet. Der Schwellenwert für die Ausweitung sollte nur als Näherungswert betrachtet werden, da auch alle Sperren, die von internen Vorgängen benötigt werden, auf diesen Schwellenwert angerechnet werden. Die Ausweitung kann früher als erwartet erfolgen.

Ist die Ausweitung nicht möglich, weil ein Sperrenkonflikt aufgetreten ist, dann wird die Transaktion fortgesetzt und die Ausweitung möglicherweise später noch einmal versucht.

Hinweis

Beabsichtigte Sperren, Zeilensperren und Seitensperren werden auf den Schwellenwert für die Ausweitung angerechnet. Dies gilt jedoch nicht für temporäre Zeilensperren. Wenn die Summe aus beabsichtigten Sperren, Zeilensperren und Seitensperren einer bestimmten Tabelle den Schwellenwert für die Ausweitung überschreitet, wird die Ausweitung durchgeführt.

Sie können die Ausweitung von Sperren pro Sitzung steuern, indem Sie den Schwellenwert für die Ausweitung festlegen. Dies wird im folgenden Codebeispiel gezeigt:

SET LOCK_ESCALATION 1000;

Diese Einstellung wirkt sich auf alle Tabellen in der Datenbank aus. Der Standardwert ist 100.

Siehe auch

Konzepte

Grundlegendes zu Sperren
Anzeigen von Sperrinformationen
Anpassen des Sperrens

Hilfe und Informationen

Informationsquellen (SQL Server Compact 3.5 Service Pack 1)