Что такое уровень изоляции «Хаос» и когда его следует использовать?

26

В документации ADO.NET показана возможность установки уровня транзакции для транзакции SQL в Chaos. Это звучит неприятно, но если эта функция есть, возможно, она имеет законное применение.

Команда SET TRANSACTION ISOLATION LEVEL в BOL (ах! Видите, я могу использовать google и BOL), кажется, ничто не названо "хаос", и ADO.NET имеет 5 режимов, которые хорошо соответствуют документированным уровням в дополнение к "хаосу"

Для чего или для кого этот уровень Хаоса? (И почему у него есть недружелюбное имя?)

Ссылки: перечисление ADO.NET

MatthewMartin
источник

Ответы:

11

Согласно документации DB2, это странный уровень изоляции, когда изменения фиксируются в базе данных, как только вы их выполняете (чтобы другие могли видеть).

Это не говорит явно, но, насколько я могу судить, отката тоже нет. По сути, это означает отсутствие транзакций вообще . «Вы говорите« сделка », но мне все равно». Таким образом -> хаос.

На самом деле, я обнаружил в каком-то списке электронной почты, что «Хаос» фактически соответствует уровню транзакции «* NONE» в «DB2 for i».

srdjan.veljkovic
источник
Хаос является степенью изоляции 0, как объяснили Рейтер и Грей в своей теории транзакционной обработки. Если вы думаете, что Read Uncommitted действительно относится к изоляции читаемых данных (и, кстати, это не то же самое, что хаос). Хаос (как и любая другая степень изоляции) обладает многими свойствами, одним из самых интересных из которых является его способность нарушать Степень 3 (сериализуемое повторяемое чтение). Суть в том, что Хаос должен использоваться только в правильном контексте (т.е. я бы рекомендовал работать только в полной изоляции для наборов данных, которые не требуют отката).
Марк Бродбент
11

Вы не можете использовать его против SQL Server.

Это было в DTS:

И находится в SSIS:

Больше ссылок, первоначально добавленных Ником Чаммасом в комментарии:

ГБН
источник
7

DB2 имеет уровень изоляции транзакции, называемый "Хаос":

Свойство DB2Connection.ConnectionString - Центр знаний IBM

Возможно, он предназначен для этого. Я действительно не уверен, но я бы предположил, что это означает отсутствие определенной изоляции транзакций.

Дэн Филд
источник
2
Кажется, только для System i. Вы знаете, что это значит? Я не могу найти много информации об этом, он говорит, что нет фиксации, поэтому я предполагаю, что это означает, что каждое утверждение фиксируется мгновенно. Но это кажется ортогональным к уровню изоляции, так что, вероятно, есть что-то еще
Леннарт