database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
ㆍInformix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Informix Q&A 571 게시물 읽기
No. 571
Re: isolation level에 관해...
작성자
박영길
작성일
2001-03-06 23:17
조회수
7,396

안녕하세요.

 

인포믹스에서 isolation level은 4가지가 있습니다.

자세한 설명은 인포믹스 SQL Syntax의 Set Isolation또는

Set Transaction부분을 보시면 됩니다. 대충 해석+설명을

해보면

 

1. dirty read(uncommitted read) - no logging mode default

읽고자하는 모든 행에 락을 테스트하거나 걸지 않고 행의 데이터를

읽는다. 다른 사용자가 트랜잭션을 시작하여 데이터가 수정되고

COMMIT를 하지 않은 상태에서도 상대가 수정한 데이터가 읽혀진다.

이에따라 팬텀행(phantom row)를 읽을 수도 있다. 주로 읽기 전용의

코드 테이블이나 수정상태로 읽혀도 무방한 경우 사용한다.

 

2. committed read - logging mode default

읽고자하는 모든 행에 락을 테스트하여 락을 걸 수 있을 경우 데이터를

읽는다. 다른 사용자가 수정하고 있는 행일 경우 set lock mode to ?에

따라 wait일 경우 커밋을 하거나 롤백을 할때가 지 기다리고 no wait일

경우는 락이 걸려있다는 오류를 wait ###일 경우에는 해당 초만큼 기다

려보고 그래도 락이 걸린 경우 오류를 반환한다. 락을 테스트만 하기

때문에 읽힌 다음에 다른사용자가 수정할 수도 있다. 기본 격리모드로

각각의 행이 서로 의존성이 없고 읽혀진 행의 값에 의존하여 update가

되지 않을 경우 사용된다.

 

3. cursor stablity

읽어들이는 행에 공유 락을 사용하여 다른 사용자가 수정할 수 없도록

한다. 락은 커서의 현재 행에 걸게 되며, 커서의 이동시 락을 풀고 다음

커서 행에 걸게된다. 물론 수정을 하게 되면 트랜잭션이 종료할 때까지

락을 걸게된다. 읽혀진 행의 값에 의존하여 update를 할 경우 사용된다.

 

4. repeatable read - ANSI database default

select하는 모든 행에 공유락을 걸고 트랜잭션이 종료할 때까지 락을

풀지 않는다. 하나의 사용자가 select한 모든 커서의 행을 다른 사용자가

수정할 수 없다. 트랜잭션 내에서 반복된 select문은 1,2,3과는 달리

동일한 결과를 select하게 된다. 많은 락을 사용함으로써 동시 사용성을

떨어뜨린다.

 

위의 설명은 테이블이 row lock을 사용할 경우에 해당하고 page lock(default)을

사용할 경우 페이지 단위로 lock를 사용하게 되므로 인접한 행 모두 락이 걸릴 수

있다. 이 경우 현재 사용자가 update중인 행이 아닌 다른 행을 읽을 경우 인접하여

같은 페이지 내에 있다면 dirty read가 아닌 경우 읽혀지지 않는다.

 

logging mode/no logging mode는 데이터베이스 생성시 logging모드를 말하여

ANSI 데이터베이스는 데이터베이스 생성시 ANSI형태로 만들어진 경우를

말합니다.

 

자세한 내용은 위에서 언급한 바와 같이 SQL Syntax를 참조하기 바랍니다.

 

그럼 수고하세요.

 

>>김재남 님께서 쓰시길<<

 

:: isolation level에 4가지가 있다고 하더군요..

:: 그중에서 dirty read을 제외하면 차이를 알수가 없네여...

:: 아시는 분이 있다면 알려 주시면 감사하겠습니다.

:: (인포믹스는 너무도 자료가 부족한것 같습니다. 저 같은 초보에게는 너무나도

:: 힘든 상황이죠....^^;)

::

[Top]
No.
제목
작성자
작성일
조회
577iif2000 설치후 informix/etc/sqlhost.std의 변경내용
최진우
2001-03-08
5775
578┕>Re: iif2000 설치후 informix/etc/sqlhost.std의 변경내용
purple
2001-03-08 11:21:39
6270
579 ┕>Re: Re: iif2000 설치후 informix/etc/sqlhost.std의 변경내용
최진우
2001-03-08 12:52:26
6453
583  ┕>Re: Message not found에 관하여...
박영길
2001-03-09 21:53:54
6178
576INTEL LINUX(RedHat 6.2)에 IIF2000 설치 후 클라이언트 연결 성공하신분을 찾습니다.
이철우
2001-03-07
5681
580┕>Re: INTEL LINUX(RedHat 6.2)에 IIF2000 설치 후 클라이언트 연결 성공하신분을 찾습니다.
딧세
2001-03-08 13:35:12
5979
592┕>Re: INTEL LINUX(RedHat 6.2)에 IIF2000 설치 후 클라이언트 연결 성공하신분을 찾습니다.
딧세
2001-03-14 11:34:25
5946
574informix
ckkkk
2001-03-07
5392
575┕>Re: informix
이철우
2001-03-07 23:18:57
5896
570isolation level에 관해...
김재남
2001-03-06
5439
571┕>Re: isolation level에 관해...
박영길
2001-03-06 23:17:38
7396
573 ┕>감사합니다...(내용없음)
김재남
2001-03-07 09:43:40
5836
568-217 에러가 무엇인가요???
초보
2001-03-05
5234
569┕>Re: -217 에러가 무엇인가요???
oninit
2001-03-06 09:33:40
6389
567DBMS가 죽었을 경우에 SQLCODE값은 어떻게 셋팅되는지요????
oninit
2001-03-05
5332
566stored procedure내부에 새로운 procedure를 만들수 있습니까?
김재남
2001-03-05
5528
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다