Auf Zeilenversionsverwaltung basierende Isolationsstufen im Datenbankmodul
Microsoft SQL Server Database Engine (Datenbankmodul) führt eine neue Implementierung einer vorhandenen Transaktionsisolationsstufe, READ COMMITTED, ein, die mithilfe der Versionsverwaltung einen Snapshot auf Anweisungsebene bereitstellt. Ebenfalls neu in SQL Server Database Engine (Datenbankmodul) ist die Transaktionsisolationsstufe SNAPSHOT, die ebenfalls die Versionsverwaltung verwendet, um Snapshots auf Transaktionsebene bereitzustellen.
Die READ COMMITTED-Isolation mithilfe der Zeilenverwaltung wird durch Festlegen der READ_COMMITTED_SNAPSHOT-Datenbankoption auf ON aktiviert. Die Snapshotisolation wird durch Festlegen der ALLOW_SNAPSHOT_ISOLATION-Datenbankoption auf ON aktiviert. Wenn eine der beiden Optionen in einer Datenbank aktiviert ist, bewahrt Database Engine (Datenbankmodul) Versionen jeder Zeile auf, an der Änderungen vorgenommen werden. Sobald eine Transaktion eine Zeile ändert, wird ein Bild der noch nicht geänderten Zeile in eine Zeile des Versionsspeichers kopiert. Der Versionsspeicher ist eine Art Sammlung von Datenseiten in tempdb. Wenn mehrere Transaktionen Änderungen an einer Zeile vornehmen, werden die verschiedenen Versionen der Zeile in einer Versionskette miteinander verknüpft. Bei Lesevorgängen werden bei der Versionsverwaltung die letzten Versionen der einzelnen Zeilen abgerufen, für die beim Starten der Transaktion bzw. Anweisung ein Commit ausgeführt wurde.
Anwendungen, die für SQL Server 2000 geschrieben wurden oder in SQL Server neu sind, implementieren die auf der Versionsverwaltung basierende READ COMMITTED-Isolation, indem Sie die READ COMMITTED-Transaktionsisolationsstufe angeben, wenn die READ_COMMITTED_SNAPSHOT-Datenbankoption auf ON festgelegt ist. Alle Lesevorgänge "sehen" die Zeilenversionen, für die beim Starten der Anweisung ein Commit ausgeführt wurde. Auf diese Weise wird ein Snapshot auf Anweisungsebene bereitgestellt.
Anwendungen, die für SQL Server geschrieben wurden, implementieren die Snapshotisolation, indem sie die Snapshot-Transaktionsisolationsstufe angeben, wenn die ALLOW_SNAPSHOT_ISOLATION-Datenbankoption auf ON festgelegt ist. Alle Lesevorgänge "sehen" in der Snapshottransaktion die Zeilenversionen, für die beim Starten der Transaktion ein Commit ausgeführt wurde. Auf diese Weise wird ein Snapshot auf Transaktionsebene bereitgestellt.
Bei Transaktionen, die eine auf die Versionsverwaltung basierende Isolationsstufe verwenden, sind für Lesevorgänge keine freigegebenen Sperren für die Daten erforderlich. Dies bedeutet, dass Lesevorgänge, die die Versionsverwaltung verwenden, andere Lese-oder Schreibvorgänge, die auf dieselben Daten zugreifen, nicht blockieren. Entsprechend blockieren auch die Schreibvorgänge die Lesevorgänge nicht. Schreibvorgänge blockieren sich jedoch gegenseitig, auch wenn sie in auf der Versionsverwaltung basierenden Isolationsstufen ausgeführt werden. Zwei Schreibvorgänge können dieselben Daten nicht zur selben Zeit ändern.
In der folgenden Tabelle werden die Themen aufgeführt, die weitere Informationen zu auf Versionsverwaltung basierenden Isolationsstufen bereitstellen.
Thema |
Beschreibung |
---|---|
Beschreibt das Konzept der Versionsverwaltung. |
|
Auswählen von auf Zeilenversionsverwaltung basierenden Isolationsstufen |
Beschreibt die Vor- und Nachteile der Versionsverwaltung und empfiehlt die Szenarios, die sich am besten für die Versionsverwaltung eignen. |
Beschreibt die Optionen, die die Versionsverwaltung in einer Datenbank aktivieren. |
|
Verwenden von auf Zeilenversionsverwaltung basierenden Isolationsstufen |
Beschreibt die Einschränkungen von auf der Zeilenversionsverwaltung basierenden Isolationsstufen. |
Beschreibt die Auswirkungen der Versionsverwaltung auf das System und erläutert die dynamischen Verwaltungssichten (Dynamic Management Views, (DMVs) sowie die Leistungsindikatoren, die Informationen zum Status der Versionsverwaltung in Datenbanken und Transaktionen zurückgeben. |