Was ist die Isolationsstufe „Chaos“ und wann sollte sie angewendet werden?


26

Die ADO.NET-Dokumentation zeigt die Möglichkeit, die Transaktionsstufe für eine SQL-Transaktion auf Chaos zu setzen. Es klingt unangenehm, aber wenn das Feature vorhanden ist, hat es vermutlich eine legitime Verwendung.

Der Befehl SET TRANSACTION ISOLATION LEVEL in BOL (ah! See, ich kann google und BOL verwenden) scheint nicht "chaos" zu heißen, und ADO.NET verfügt über 5 Modi, die zusätzlich zu "chaos" auch gut dokumentierten Ebenen entsprechen.

Wofür oder für wen ist dieses Chaos Level gedacht? (Und warum hat es einen unfreundlichen Namen?)

Refs: Die ADO.NET-Enumeration

Antworten:


11

Laut der DB2-Dokumentation handelt es sich um eine seltsame Isolationsstufe, bei der Änderungen an der Datenbank festgeschrieben werden, sobald Sie ausgeführt werden (damit andere sie sehen können).

Es heißt nicht explizit, aber es gibt auch kein Rollback, soweit ich das beurteilen kann. Grundsätzlich bedeutet es überhaupt keine Transaktion . "Du sagst 'Transaktion', aber das interessiert mich nicht wirklich". Also -> Chaos.

Tatsächlich habe ich in einer E-Mail-Liste festgestellt, dass "Chaos" tatsächlich der Transaktionsebene "* NONE" in "DB2 for i" zugeordnet ist.


Chaos ist Isolation Grad 0, wie von Reuter und Gray in ihrer Theorie der Transaktionsverarbeitung erklärt. Wenn Sie der Meinung sind, dass Read Uncommitted sich wirklich auf die Isolation der gelesenen Daten bezieht (und im Übrigen nicht mit Chaos gleichzusetzen ist). Chaos hat (wie jedes andere Maß an Isolation) viele Eigenschaften - eine der interessantesten ist die Fähigkeit, Grad 3 (serialisierbares wiederholbares Lesen) zu verletzen. Die Quintessenz ist, dass Chaos nur im richtigen Kontext verwendet werden sollte (dh, ich würde vorschlagen, dass Datensätze, für die kein Rollback erforderlich ist, nur vollständig isoliert ausgeführt werden).
Mark Broadbent


7

DB2 hat eine Transaktionsisolationsstufe namens "Chaos":

DB2Connection.ConnectionString-Eigenschaft - IBM Knowledge Center

Vielleicht soll es dafür verwendet werden. Ich bin mir wirklich nicht sicher, aber ich würde annehmen, dass dies keine definierbare Transaktionsisolation bedeutet.


2
Scheint nur für System i zu sein. Wissen Sie was das bedeutet? Ich kann nicht viele Informationen dazu finden. Es wird kein Commit angegeben. Ich gehe also davon aus, dass jede Anweisung sofort festgeschrieben wird. Dies scheint jedoch orthogonal zur Isolationsstufe zu sein, sodass es wahrscheinlich noch etwas anderes gibt
Lennart,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.