2008-08-31 7 views

Antwort

2

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.

3

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.

+0

Oder "set transaction isolation level read_uncommitted" einmal. – Constantin

+0

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 –

2

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.

2

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).

Verwandte Themen