Qual é o nível de isolamento do “caos” e quando deve ser usado?

26

A documentação do ADO.NET mostra a possibilidade de definir o nível de transação para uma transação SQL como Chaos. Parece desagradável, mas se o recurso estiver presente, provavelmente ele terá algum uso legítimo.

O comando SET TRANSACTION ISOLATION LEVEL no BOL (ah! Veja, eu posso usar o google e o BOL) nada parece ser chamado de "caos" e o ADO.NET possui 5 modos que correspondem muito bem aos níveis documentados, além do "caos"

Para que ou para quem é esse nível de Caos? (E por que ele tem um nome hostil?)

Refs: A enumeração ADO.NET

MatthewMartin
fonte

Respostas:

11

De acordo com a documentação do DB2, é um nível de isolamento estranho, onde as alterações são confirmadas no banco de dados assim que você as executa (para outras pessoas verem).

Não diz explicitamente, mas também não há reversão, até onde eu sei. Basicamente, isso significa nenhuma transação . "Você diz 'transação', mas eu realmente não me importo". Assim -> caos.

Na verdade, descobri em algumas listas de e-mail que "Chaos" na verdade mapeia para o nível de transação "* NONE" no "DB2 for i".

srdjan.veljkovic
fonte
O caos é o isolamento do grau 0, conforme explicado por Reuter e Gray em sua teoria do processamento transacional. Se você acha que Read Uncommitted está realmente relacionado ao isolamento dos dados que estão sendo lidos (e aliás não é o mesmo que caos). O caos (como qualquer outro grau de isolamento) tem muitas propriedades - uma das mais interessantes é a capacidade de violar o grau 3 (leitura repetível serializável). A linha inferior é que o Caos deve ser usado apenas no contexto correto (ou seja, eu sugiro executar apenas em isolamento completo para conjuntos de dados que não exigem reversão).
Mark Broadbent
7

O DB2 possui um nível de isolamento de transação chamado "Chaos":

Propriedade DB2Connection.ConnectionString - IBM Knowledge Center

Talvez seja para ser usado para isso. Eu realmente não tenho certeza, mas eu diria que isso significa que não há isolamento de transação definível.

Dan Field
fonte
2
Parece ser apenas para o System i. Você sabe o que isso significa? Não consigo encontrar muita informação sobre isso; ele diz que não há confirmação, então presumo que isso significa que cada declaração é confirmada instantaneamente. Mas isso parece ortogonal ao nível de isolamento, então provavelmente há algo mais
Lennart