289
12
장
트랜잭션
12.1.2
잠금 단위
리소스를 잠글 때 사용할 수 있는 여러 가지
방법
이 있습니다. 서버는 세 가지 다른 수준 또는
단위
granularity
중 하나에서 잠금을 적용할 수 있습니다.
●
테이블 잠금
table
locks
여러 사용자가 동일한 테이블의 데이터를 동시에 수정하지 못하도록 합니다.
●
페이지 잠금
page
locks
여러 사용자가 테이블의 동일한 페이지(한 페이지는 보통
2KB
에서
16KB
범위의 메모리 세그먼트 )의
데이터를 동시에 수정하지 못하도록 합니다.
●
행 잠금
row
locks
여러 사용자가 테이블에서 동일한 행을 동시에 수정하지 못하도록 합니다.
다시 말하지만, 이러한 접근 방식에는 장단점이 있습니다. 전체 테이블을 잠그는 데는 부기가
거의 필요하지 않지만, 이 방법은 사용자 수가 증가함에 따라 대기 시간이 빠르게 증가합니다.
반면에 행 잠금은 훨씬 더 많은 부기가 필요하지만 많은 사용자가 각자 다른 행에 대해 작업
한다면 동일한 테이블을 수정할 수 있습니다. 이 책에서 언급하는 세 서버 중 마이크로소프트
SQL
서버는 페이지, 행, 테이블 잠금을 사용하고, 오라클 데이터베이스는 행 잠금만 사용하며,
MySQL
은 테이블, 페이지 또는 행 잠금을 사용합니다 (스토리지 엔진에 따라 다릅니다 ).
SQL
서버는 특정 상황에서 행에서 페이지로, 페이지에서 테이블로 잠금을
에스컬레이션
escalation
하지
만 오라클 데이터베이스는 잠금을 에스컬레이션 하지 않습니다.
보고서로 ...