DB2는 Oracle과 Lock 매카니즘에서 큰 차이를 보입니다.
가장 큰 컨셉을 말씀드리자면,
DB2에서는 현재의 데이타만 보여질 수 있도록 합니다.
다시 말씀드리면 내가 데이터를 보고 있을때 누군가가 그 데이터를 수정해서 내가 보고 있는 데이터가 과거의 데이터가 되지 않도록 합니다.
그러기 위해서 DB2는 select 문장에 대해서도 S-Lock을 겁니다.
S-Lock은 공유락으로서 또다른 S-Lock(select)은 허용하지만, 다른 사람(?)이 데이터의 변경(update, delete)를 할 수 없게 합니다.
S-Lock에 대비되는 개념으로 U-Lock이 있는데, 이는 다른 사람이 데이터를 변경하는 것을 막음과 동시에 또다른 S-Lock(select)도 허용하지 않습니다.
데이터를 변경하는 도중이니 변경한 후에 보라는 의미지요...
이와 같이 DB2는 크게 2 종류의 Lock이 존재합니다. (물론 세부적으로 여러 종류의 Lock이 존재합니다)
따라서 select 문장만 던지시더라도 lock은 걸립니다. S-Lock이......
-- 지나가다 급한넘 님이 쓰신 글:
>> 급해서 질문을 올립니다..^_^
>> 다름이 아니오라 DB2에서 해당필드의
>> 레코드 락(Lock)을 걸수있는지여..
>> 있다면 어떻게 하면되는지 궁금합니다..
>> 사실 급하기도 하구여...
>> 먼저 감솨하다는 말쓰부터 드립니다..^^
>> 그럼 이만.
|