Sperren (SQL Server Compact)
Wenn mehrere Benutzer oder Anwendungen gleichzeitig auf die gleichen Daten zugreifen, verhindert das Sperren das gleichzeitige Ändern der Daten. Sperren werden intern durch Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) Datenbankmodul verwaltet. Die Sperren werden automatisch basierend auf Benutzeraktionen aktiviert und deaktiviert.
Wenn keine Sperren verwendet werden und mehrere Benutzer gleichzeitig die gleichen Daten aktualisieren, können die Daten innerhalb der Datenbank logisch falsch sein. Bei Abfragen auf diesen Daten kann es dann zu unerwarteten Ergebnissen kommen.
Von einer Anwendung wird niemals eine direkte Anforderung für eine Sperre gestellt. Stattdessen werden von SQL Server Compact 3.5 beim Beginn einer Transaktion, wenn Befehle in der Abfragesprache, der Datenmanipulationssprache (Data Manipulation Language, DML) oder der Datendefinitionssprache (Data Definition Language, DDL) innerhalb der Transaktion ausgeführt werden, alle Ressourcen gesperrt, die dem Schutz der Ressourcen auf der von Ihnen gewünschten Isolationsstufe dienen.
Von SQL Server Compact 3.5 wird automatisch bestimmt, wann Sperren für alle Ressourcen aktiviert und deaktiviert werden. Standardmäßig werden Sperren auf Zeilenebene für Datenseiten und auf Seitenebene für Indexseiten verwendet. Um Systemressourcen zu erhalten, werden vom Sperren-Manager automatisch Sperreskalationen ausgeführt, wenn ein konfigurierbarer Schwellenwert für die Anzahl der Zeilensperren überschritten wird. Die Maximalanzahl der Sperren, die pro Sitzung im Sperren-Manager zugeordnet werden kann, beträgt 262143.
Sie können die Sperrgranularität für einige Vorgänge ändern. Gehen Sie dabei umsichtig vor, denn das Ändern der Sperrgranularität kann sich auf den gleichzeitigen Zugriff nachteilig auswirken.
Die folgenden Ressourcen können von SQL Server Compact 3.5 gesperrt werden:
- Zeilen
- 4 KB Daten oder Indexseiten
- Tabellenschemata
- Tabellen
- Datenbanken
Das Sperren einer kleineren Granularität wie beispielsweise der Zeilenebene erhöht den gleichzeitigen Zugriff, führt aber zu mehr Overhead, da mehr Sperren aufrecht erhalten werden müssen, wenn viele Zeilen gesperrt sind. Das Sperren einer größeren Granularität wie beispielsweise der Tabellenebene reduziert den gleichzeitigen Zugriff, da das Sperren einer gesamten Tabelle den Zugriff auf jeden Teil der Tabelle durch andere Transaktionen beschränkt. Das Sperren auf dieser Ebene führt allerdings zu einem geringeren Overhead, weil weniger Sperren aufrecht erhalten werden.
In diesem Abschnitt
Thema | Beschreibung |
---|---|
Erläutert die Grundlagen des Sperrens in SQL Server Compact 3.5. |
|
Beschreibt Anzeigeinformationen, die von der sys.lock_information-Ansicht zurückgegeben werden. |
|
Beschreibt Möglichkeiten zum Anpassen des Sperrens. |