"카오스"격리 수준은 무엇이며 언제 사용해야합니까?


26

ADO.NET 설명서는 SQL 트랜잭션의 트랜잭션 수준을 Chaos로 설정하는 가능성을 보여줍니다. 불쾌하게 들리지만 기능이 있으면 합법적으로 사용됩니다.

BOL 의 SET TRANSACTION ISOLATION LEVEL 명령 (ah! google 및 BOL을 사용할 수 있음)에는 "chaos"라는 이름이 표시되지 않으며 ADO.NET에는 "chaos"외에도 문서화 된 수준에 잘 맞는 5 가지 모드가 있습니다.

이 카오스 레벨은 누구 또는 누구입니까? (그리고 왜 이름이 불친절합니까?)

참조 : ADO.NET 열거 형

답변:


11

DB2 문서에 따르면, 변경이 실행 되 자마자 (다른 사람들이 볼 수 있도록) 변경 사항이 데이터베이스에 커밋되는 이상한 격리 레벨입니다.

명시 적으로 말하지는 않지만 내가 알 수있는 한 롤백도 없습니다. 기본적으로 거래가 전혀 없음 을 의미 합니다 . "당신은 '트랜잭션'이라고 말하지만 실제로는 상관하지 않습니다." 따라서-> 혼돈.

실제로, 일부 전자 우편 목록에서 "Chaos"가 실제로 "i 용 DB2 "의 "* NONE" 트랜잭션 레벨로 맵핑 됨을 발견했습니다 .


카오스는 트랜잭션 처리 이론에서 Reuter와 Gray가 설명한대로 0도 격리입니다. Read Uncommitted가 실제로 읽고있는 데이터의 격리와 관련이 있다고 생각한다면 (그리고 우연히 혼란과 동일하지 않습니다). 카오스 (다른 정도의 격리와 마찬가지로)에는 많은 속성이 있습니다. 가장 흥미로운 것 중 하나는 학위 3 (직렬화 가능한 반복 가능한 읽기)을 위반하는 기능입니다. 결론은 카오스가 올바른 컨텍스트에서만 사용해야한다는 것입니다 (즉, 롤백이 필요없는 데이터 세트에 대해 완전히 격리 된 상태에서만 실행하는 것이 좋습니다).
Mark Broadbent


7

DB2에는 "Chaos"라는 트랜잭션 분리 레벨이 있습니다.

DB2Connection.ConnectionString 특성 -IBM Knowledge Center

아마도 그것은 그것을 위해 사용되어야합니다. 확실하지는 않지만 정의 가능한 트랜잭션 격리가 없음을 의미한다고 가정합니다.


2
System i 전용 인 것으로 보입니다. 그게 무슨 뜻인지 알아? 나는 그것에 대해 많은 정보를 찾을 수 없으며, 커밋이 없다고 말하므로 각 문장이 즉시 커밋된다는 것을 의미한다고 가정합니다. 그러나 이것은 격리 수준과 직교하는 것처럼 보이므로 다른 것이있을 수 있습니다.
Lennart
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.