트랜잭션 락 기법은 여러 트랜잭션이 동시에 같은 데이터 항목에 접근하는 것을 방지함으로써 데이터의 동시성 문제를 제어하는 방법입니다.
트랜잭션 처리의 순차성을 보장하기 위한 방법
Lock은 DBMS가 자동으로도 적용하기도 하고 수동으로도 적용 할 수 있다.
트랜잭션 락을 두 카테고리로 나눈다면 낙관적 락과 비관적 락이 있는데,
비관적 락은 공유락 또는 배타적 락 기법을 사용하며, 낙관적 락은 다른 접근 방식을 사용하는 별개의 카테고리 이다.
개념: 트랜잭션이 데이터를 수정할 때, 충돌이 발생하지 않을 것으로 가정하고 락을 거는 방식
동작: 트랜잭션이 커밋할 때까지 락을 걸지 않고, 커밋 직전에 레코드의 버전 등을 통해 충돌 여부를 검사한다.
유의사항: 충돌이 많이 발생하거나 비용이 많이 발생할 것이라고 판단되는 곳에 사용하지 않는 것이 좋다.
단점: 만약 충돌이 발생했을 때 해결하려면 비관적 락과 다르게 개발자가 직접 롤백 처리를 해야 해서 번거롭다.