이 게시글은 패스트캠퍼스의 '데이터베이스와 SQLD 합격패스 Online' 강의를 요약한 내용입니다.
1. 락
- 갱신손실 문제를 해결하기위해서는 상대방 트랜잭션이 데이터를 사용하는지 여부를 알 수 있는 규칙이 필요하다.
- 락은 데이터가 수정 중이라는 사실을 알리는 방법의 잠금 장치이다.
1.1 락의 유형
- 공유락(LS, shared lock)
- 배타락(LX, exclusive lock)
2. 데드락
- 두 개 이상의 트랜잭션이 각각 자신의 데이터에 대하여 락을 획득하고 상대방 데이터에 대하여 락을 요청하면 무한 대기 상태에 빠질 수 있는 현상. (교착상태)
- 일반적으로 데드락이 발생하면 DBMS는 T1 혹은 T2의 작업 중 하나를 강제로 중지 시킴

3. 트랜잭션 처리 시 주의사항
3.1 데드락을 최소화시키는 DBMS 전반적 대책
- 트랜잭션을 자주 커밋
- 정해진 순서로 테이블에 엑세스하게 함
- 필요없는 경우에는 읽기 잠금 획득 사용을 피함
- 쿼리에 의한 잠금 범위를 좁히거나 더 작은것으로 함
- 한 테이블 복수 행을 순서 변경 없이 갱신하면 교착 상태 발생하기 쉬움
- 테이블 단위 잠금 획득해 갱신 직렬화
또한 Auto COMMIT, 긴 트랜잭션 또한 자제하는 것이 좋다.