Wie vermeide ich Lesesperren in meiner Datenbank?Wie vermeide ich Lesesperren in meiner Datenbank?
Antworten für mehrere Datenbanken willkommen!
Wie vermeide ich Lesesperren in meiner Datenbank?Wie vermeide ich Lesesperren in meiner Datenbank?
Antworten für mehrere Datenbanken willkommen!
In Oracle der Standard-Betriebsmodus ist die lesen Isolationsstufe begangen, wo eine select-Anweisung nicht durch eine andere Transaktion gesperrt ist die modifizierende Daten, die es liest. Von Data Concurrency and Consistency:
Jede Abfrage durch eine Transaktion ausgeführt nur Daten sieht, die vor der Abfrage begangen wurde (nicht die Transaktion) begann. Eine Oracle-Abfrage liest niemals schmutzige (nicht committed) Daten.
In SQL Server können Sie das Schlüsselwort with (nolock) in Ihren SELECT-Anweisungen verwenden. Beispiel:
Select table1.columna, table2.columna
from table1 with(nolock), table2 with(nolock)
Stellen Sie sicher, mit (Nolock) für jede Tabelle/Ansicht in der Abfrage anzugeben.
Oder "set transaction isolation level read_uncommitted" einmal. – Constantin
Was bedeutet, dass Sie "nicht committed" Daten mit möglichen katastrophalen Ergebnissen lesen: http://StackOverflow.com/Questions/686724/SQL-when-Sould-You-use-with-nolock/686733#686733 Oft ist dies kein Problem, vor allem mit den "neuen" Snapshot-Funktionen, aber Sie müssen sich der Konsequenzen bewusst sein: http://www.codinghorror.com/blog/2008/08/deadlocked.html –
Jeff Atwood hat einen guten Beitrag zu diesem Thema:
Bitte fassen Sie zumindest die Antworten zusammen, anstatt direkt zu verlinken. Diese Verbindung ist jetzt tot. – Joseph
In Firebird blockieren Schriftsteller nie Leser und es gibt keine schmutzigen Lesevorgänge. Nur Read-Commited- und Snapshot-Isolationsstufen.
Es verwendet eine Multi-Generations-Engine (wie Orakel glaube ich) anstelle von einfachen Seite oder Datensatz sperren.
PostgreSQL verwendet auch MVCC (Multi-Version Concurrency Control), also sollten Sie die Standardtransaktionsisolationsstufe (read-committed) niemals blockieren, es sei denn, jemand tut Wartung in der DB (Löschen/Hinzufügen von Spalten/Tabellen/Indizes/etc).
Keine Lesevorgänge? – CodingBarfield