트랜잭션은 이해가 되었는데 락은 대체 무슨 관련이 있을까?
정의 : 데이터의 일관성을 지키기 위해 락을 걸고 관리하는 것
동시성 / 일관성 / 잠금
필요성 : 동시에 접근해서 수정하려고 할 때 DB의 일관성이 깨질 수 있다.
e.g. 책 1권을 동시에 빌리는데 두 명 다 빌림 처리 되어버림
-> 락은 여러 사용자가 동일한 시간에 동일한 데이터를 동시에 엑세스할 수 있게 해준다.
락은 트랜잭션을 순차적으로 처리되도록 함으로써 손실된 업데이트를 방지하는데 중요한 역할을 하며 자동으로 발생한다.
락을 통해 데이터에 대한 일관성 유지, 동시 사용이 가능해진다.
트랜잭션이 데이터의 부정합을 방지해주고 정합성을 높여준다면(완성도?) 락은 데이터의 동시성, 순차성, 일관성 등 일종의 순서에 관한 것을 높여준다.
Active : 트랜잭션 실행 상태
Failed : 실패
Aborted : 트랜잭션 취소 상태, 롤백
Partial commiitted : 트랜잭션 커밋 명령이 도착한 상태, sql문은 이미 실행 되었고 commit만 남은 상태
Committed : 커밋이 완료되 상태