Anpassen der Sperren für einen Index

Microsoft SQL Server-Datenbankmodul verwendet eine dynamische Sperrstrategie, die für Abfragen in den meisten Fällen automatisch die am besten geeignete Granularität der Sperren auswählt. In Fällen mit klar verständlichen und konsistenten Zugriffsmustern kann die Einschränkung der Sperrstufen für einen Index von Vorteil sein.

So verwendet beispielsweise eine Datenbankanwendung eine Nachschlagetabelle, die wöchentlich in einem Batchverarbeitungsprozess aktualisiert wird. Die effizienteste Sperrstrategie besteht darin, die Seiten- und Zeilensperrung zu deaktivieren und zu ermöglichen, dass alle gleichzeitigen Leser eine gemeinsame Sperre (Shared, S) für die Tabelle erhalten, wodurch der Aufwand reduziert wird. Bei der wöchentlichen Aktualisierung mithilfe der Batchverarbeitung kann der Aktualisierungsvorgang eine exklusive Sperre (X) anwenden und anschließend die gesamte Tabelle aktualisieren.

Die Granularität der Sperren für einen Index kann mithilfe der Anweisungen CREATE INDEX und ALTER INDEX festgelegt werden. Außerdem können die Anweisungen CREATE TABLE und ALTER TABLE verwendet werden, um Granularität der Sperren von PRIMARY KEY- und UNIQUE-Einschränkungen festzulegen. Aus Gründen der Abwärtskompatibilität kann auch die gespeicherte Systemprozedur sp_indexoption zum Festlegen der Granularität verwendet werden. Zur Anzeige der aktuellen Sperroption für einen bestimmten Index verwenden Sie die INDEXPROPERTY-Funktion. Es ist möglich, Sperren auf Seitenebene, auf Zeilenebene oder eine Kombination von Sperren auf Seiten- und Zeilenebene für einen bestimmten Index nicht zuzulassen.

Nicht zugelassene Sperren Indexzugriff durch

Seitenebene

Sperren auf Zeilen- und Tabellenebene

Zeilenebene

Sperren auf Seiten- und Tabellenebene

Seiten- und Zeilenebene

Sperren auf Tabellenebene

Wenn beispielsweise bekannt ist, dass Transaktionen oft um Sperren für eine bestimmte Tabelle konkurrieren, kann es sich als vorteilhaft erweisen, wenn Sperren auf Seitenebene nicht zugelassen (also nur Sperren auf Zeilenebene zugelassen) werden. Wenn für den Zugriff auf einen Index oder eine Tabelle stets Tabellenscans verwendet werden, kann es sich als hilfreich erweisen, wenn Sperren auf Seiten- und auf Zeilenebene nicht zugelassen werden, indem ausschließlich Sperren auf Tabellenebene zugelassen werden.

ms189076.note(de-de,SQL.90).gifWichtig:
Der Datenbankmodul-Abfrageoptimierer wählt so gut wie immer die richtige Sperrgranularität aus. Es wird empfohlen, dass Sie die vom Abfrageoptimierer getroffene Wahl nicht außer Kraft setzen. Wenn eine Sperrstufe nicht zugelassen wird, kann sich dies negativ auf die Parallelität für eine Tabelle oder einen Index auswirken. Wenn beispielsweise bei einer großen Tabelle, auf die viele Benutzer häufig zugreifen, nur Sperren auf Tabellenebene angegeben werden, kann sich dies deutlich auf die Leistung auswirken. Die Benutzer sind dann gezwungen, auf die Aufhebung der Sperre auf Tabellenebene zu warten, bevor auf die Tabelle zugegriffen werden kann.

Siehe auch

Andere Ressourcen

ALTER INDEX (Transact-SQL)
ALTER TABLE (Transact-SQL)
CREATE INDEX (Transact-SQL)
CREATE TABLE (Transact-SQL)
INDEXPROPERTY (Transact-SQL)
sp_indexoption (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005