Qual è il livello di isolamento "Caos" e quando dovrebbe essere usato?


26

La documentazione ADO.NET mostra la possibilità di impostare il livello di transazione per una transazione SQL su Chaos. Sembra spiacevole, ma se la funzionalità è presente, presumibilmente ha un uso legittimo.

Il comando SET TRANSACTION ISOLATION LEVEL in BOL (ah! Vedi, posso usare google e BOL) nulla sembra essere chiamato "caos" e ADO.NET ha 5 modalità che si adattano perfettamente ai livelli documentati oltre al "caos"

Cosa o per chi è questo livello di caos? (E perché ha un nome ostile?)

Rif: l'enumerazione ADO.NET

Risposte:


11

Secondo la documentazione DB2, si tratta di un livello di isolamento strano, in cui le modifiche vengono salvate nel database non appena vengono eseguite (affinché altri lo possano vedere).

Non dice esplicitamente, ma, per quanto ne sappia, non c'è nemmeno un rollback. Fondamentalmente, non significa alcuna transazione . "Dici" transazione ", ma non mi interessa davvero". Quindi -> caos.

In realtà, ho trovato in alcuni elenchi di posta elettronica che "Chaos" è effettivamente mappato al livello di transazione "* NONE" in "DB2 per i".


Il caos è l'isolamento di grado 0 come spiegato da Reuter e Gray nella loro teoria dell'elaborazione transazionale. Se pensi che Read Uncommitted si riferisca davvero all'isolamento dei dati letti (e per inciso non è lo stesso del caos). Il caos (come qualsiasi altro grado di isolamento) ha molte proprietà, una delle più interessanti delle quali è la sua capacità di violare il Grado 3 (lettura ripetibile serializzabile). La linea di fondo è che Chaos dovrebbe essere usato solo nel giusto contesto (cioè suggerirei di eseguire solo in completo isolamento per set di dati che non richiedono il rollback).
Mark Broadbent,


7

DB2 ha un livello di isolamento delle transazioni chiamato "Caos":

Proprietà DB2Connection.ConnectionString - IBM Knowledge Center

Forse è pensato per essere usato per quello. Non ne sono davvero sicuro, ma presumo che non significhi alcun isolamento delle transazioni definibile.


2
Sembra essere solo per System i. Sai cosa significa? Non riesco a trovare molte informazioni al riguardo, non dice alcun commit, quindi presumo significhi che ogni istruzione è impegnata all'istante. Ma questo sembra ortogonale al livello di isolamento, quindi probabilmente c'è qualcos'altro
Lennart l'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.