안녕하세요.
informix에서는 3가지 종류의 lock을 지원합니다.
shared lock : read작업을 할때 걸리는 공유lock
update lock : update cursor를 이용시 select(fetch)시 걸리게 되며 변경될때 lock이 새로 걸리는 것이 아니라 exclusive lock으로 전이되는 lock
exclusive lock : 변경 작업시 걸리는 lock
사용자의 작업이 크게 read와 update(변경) 로 구분되며,
이때, 두 작업의 특성별로 lock을 관리하는 방법이 달라집니다.
read작업시 isolation level 4가지 종류로 관리하게 됩니다.
dirty read : lock이 걸린 data도 상관없이 읽으며, 이때 자신은 lock을 걸지 않음.
committed read : lock이 걸리지 않은 data를 읽으며, 자신은 lock을 걸지 않음.
cursor stability : cursor 사용시만 적용되며, cursor에서 한행이 fetch될때에 그 row에 lock을 걸고, 다음 row를 fetch할때 lock을 해지함.
repeatable read : 현재 질의내에서 참조하는 모든 row에 대해서 lock을 검.
정리하자면, lock이 걸린 data를 읽을수 있는 isolation level은 dirty read입니다.
update작업의 경우, 반드시 lock을 걸고 작업하게 되며, 어느정도의 범위에 lock을 걸고 작업하는 지를 설정할 수 있습니다.
단위는 database, table, page, row 가 있습니다.
좀더 자세한 내용은 제가 informix 프로그래밍 개발 정보에 올려놨습니다.
다운받아 보세요.
http://database.sarang.net/?criteria=informix&subcrit=devel&currpg=0
그럼 도움이 되셨길...
-- defndeb 님이 쓰신 글:
>> 안녕하세요?
>>
>> 전문가 여러분....
>>
>> 궁금한 점이 있어서.. 이렇게 글을 띄웁니다.
>>
>> 그동안 개발을 Oracle만 해오다가 이번에 Informix를 다루게 되었는데...
>> Oracle은 수많은 Tables의 Lock속에서도 Read Only의 속성을 가지는 반면에..
>> Informix는 기본적으로 관련 Tables의 Transaction 중에는 Read할 수가
>> 없습니다.
>>
>> 관련 Setup 환경을 보아도 이해가 되질 않습니다.
>> Informix는 진정으로 Lock관련 Tables을 어떻게 관리하는지 궁금합니다.
>>
>> 저에게 조금만 알려 주시면 감사하겠습니다.
>>
>> 진심으로 답변에 감사드립니다.
|