Share via


Parallelität

Durch die Parallelität wird mehreren Benutzern der gleichzeitige Zugriff auf Daten ermöglicht. Wenn das Datenbankmodul eine große Menge gleichzeitiger Vorgänge unterstützt, erhöht sich auch die Parallelität der Datenbank. In Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) wird die Parallelität durch Sperren ermöglicht, die für den Schutz der Daten sorgen. Über die Sperren wird gesteuert, wie mehrere Benutzer gleichzeitig auf freigegebene Daten zugreifen und diese ändern können, ohne Konflikte zu erzeugen. Weitere Informationen finden Sie unter Sperren (SQL Server Compact).

Probleme mit der Parallelität

Wenn Sie das Ändern und Lesen von Daten durch mehrere Benutzer nicht verwalten, können Probleme mit der Parallelität auftreten. Wenn beispielsweise mehrere Benutzer zeitgleich auf eine Datenbank zugreifen, kann es vorkommen, dass die Transaktionen der Benutzer gleichzeitig für dieselben Daten Vorgänge ausführen. Im Folgenden werden einige der Probleme mit der Parallelität aufgeführt, die im Zusammenhang mit SQL Server Compact 3.5 auftreten können:

  • Verlorene Aktualisierungen
    Verlorene Aktualisierungen treten dann auf, wenn mindestens zwei Transaktionen dieselbe Zeile auswählen und diese Zeile dann auf der Basis des ursprünglich ausgewählten Werts aktualisieren. Die letzte Aktualisierung überschreibt die Aktualisierungen, die von den anderen Transaktionen vorgenommen wurden, wodurch Daten verloren gehen.
  • Inkonsistente Analyse (nicht wiederholbarer Lesevorgang)
    Die inkonsistente Analyse tritt dann ein, wenn eine zweite Transaktion mehrmals auf dieselbe Zeile zugreift und jedes Mal verschiedene Daten liest. Für dieselbe Zeile werden mehrere Lesevorgänge durchgeführt, wobei jedes Mal die Informationen von einer anderen Transaktion geändert werden.
  • Lesen eines Phantoms
    Das Lesen eines Phantoms tritt dann ein, wenn ein Einfügungs- oder Löschvorgang in einer Zeile ausgeführt wird, die zu einem Zeilenbereich gehört, der von einer Transaktion gelesen wird. Der erste Lesevorgang der Transaktion für den Zeilenbereich zeigt eine Zeile, die im darauf folgenden Lesevorgang nicht mehr vorhanden ist, weil sie von einer anderen Transaktion gelöscht wurde. Es ist aber auch möglich, dass als Folge eines Einfügevorgangs durch eine andere Transaktion bei einem Folgelesevorgang einer Transaktion eine Zeile angezeigt wird, die im ursprünglichen Lesevorgang nicht vorhanden war.

Hinweis

Ein sehr häufiges Problem der Parallelität, die Abhängigkeit von Daten, für die kein Commit ausgeführt wurde (Dirty Read), tritt bei SQL Server Compact 3.5 nicht auf. Dieses Problem tritt dann auf, wenn eine zweite Transaktion eine Zeile auswählt, die von einer anderen Transaktion aktualisiert wird. Die zweite Transaktion liest Daten, für die noch kein Commit ausgeführt wurde und die von der Transaktion, die die Zeile aktualisiert, noch geändert werden können. Diese so genannten Dirty Reads treten beim Verwenden von Microsoft SQL Server 2008 auf. Weitere Informationen zu Problemen bei der Parallelität finden Sie unter "Parallelitätseffekte" in der Onlinedokumentation von SQL Server.

Parallelitätssteuerung

In einem Datenbankszenario gibt es zwei Arten von Mechanismen für die Parallelitätssteuerung:

  • Steuerung durch vollständige Parallelität
    Bei der Steuerung durch vollständige Parallelität wird von der Annahme ausgegangen, dass die Wahrscheinlichkeit von Ressourcenkonflikten zwischen mehreren Benutzern sehr gering ist. Deshalb werden Transaktionen ohne Ressourcensperren zugelassen. Ressourcen werden nur dann geprüft, wenn Transaktionen Daten ändern. Dabei wird ermittelt, ob ein Konflikt aufgetreten ist (z. B. durch Prüfen einer Versionsnummer). Wenn ein Konflikt auftritt, muss die Anwendung die Daten lesen und dann erneut versuchen, die Änderung durchzuführen. Die Steuerung durch vollständige Parallelität wird nicht mit dem Produkt bereitgestellt, aber sie kann manuell in die Anwendung integriert werden, indem der Datenbankzugriff nachverfolgt wird.
  • Steuerung durch eingeschränkte Parallelität
    Bei der Steuerung durch eingeschränkte Parallelität werden Ressourcen bei Bedarf für die Dauer einer Transaktion gesperrt. SQL Server Compact 3.5 unterstützt die Steuerung durch eingeschränkte Parallelität, bei der Ressourcen bei Bedarf für die Dauer einer Transaktion gesperrt werden.

Weitere Informationen zur vollständigen und eingeschränkten Parallelität finden Sie unter "Parallelitätskontrolltypen" in der Onlinedokumentation von SQL Server.

Hinweis

Einige 64-Bit-Plattformszenarien unterstützen nicht den gleichzeitigen Zugriff auf eine Datenbankdatei mit älteren Versionen von SQL Server Compact. Informationen über 64-Bit-Komponenten finden Sie unter Verwaltung von 64-Bit-Datenbankanwendungen.

Siehe auch

Konzepte

Transaktionen (SQL Server Compact)
Sperren (SQL Server Compact)
Mehrbenutzerzugriff

Hilfe und Informationen

Informationsquellen (SQL Server Compact 3.5 Service Pack 1)