[Oracle] 비관적, 낙관적 동시성 제어


[Oracle] 비관적, 낙관적 동시성 제어

비관적 동시성 제어 (Pessimistic Concurrency Control) 사용자들이 같은 데이터를 동시에 수정할 것이라고 가정함 따라서 한 사용자가 데이터를 읽는 시점에 Lock을 걸고 조회 또는 갱신 처리가 완료될 때까지 Lock을 유지 Locking은 첫 번째 사용자가 트랜잭션을 완료하기 전까지 다른 사용자들이 그 데이터를 수정할 수 없게 만들기에 비관적 동시성 제어를 잘못 사용하면 동시성을 저해 받게 됨 잘 사용하면 약이 됨 비관적 동시성 제어 구현 SELECT 포인트, 방문횟수, 방문일시, 구매실적 FROM 고객 WHRER 고객번호 = :cust_num FOR UPDATE; -- 여기서 무언가 발생하면 문제 발생 UPDATE 고객 SET 적립포인트 = :적립포인트 WHERE 고객번호 = :cust_num SELECT 문 이후와 UPDATE 문 이전에 다른 트랜잭션이 같은 고객 레코들을 변경하면 문제가 발생할 수 있다. 이를 위해서 FOR UPDATE를 사용해서 해당 고...


#oracle #낙관적락 #동시성제어 #비관적락 #오라클

원문링크 : [Oracle] 비관적, 낙관적 동시성 제어