데이터베이스 잠금 메커니즘

song4·2023년 7월 28일
0

오잉

목록 보기
2/2
post-thumbnail

데이터베이스에서의 잠금(Locking) 메커니즘은 여러 레벨에서 작동할 수 있습니다.

이는 데이터베이스의 동시성 제어(Concurrency Control)에 중요한 역할을 하는데, 어떤 데이터에 어느 수준의 잠금을 걸 것인지에 따라 성능과 동시 처리 능력이 달라질 수 있습니다.


로우(행) 레벨 잠금(Row-Level Locking)
가장 세분화된 레벨의 잠금으로, 개별 행에 대한 잠금을 의미합니다.
이렇게 하면 한 번에 한 트랜잭션이 특정 행을 업데이트할 수 있으므로 동시성이 높아지지만, 많은 수의 잠금이 필요하여 오버헤드가 증가할 수 있습니다.

페이지 레벨 잠금(Page-Level Locking)
페이지라는 블록 단위로 잠금을 거는 방식입니다. 페이지는 일련의 연속된 행들로 구성되며, 페이지 레벨 잠금은 로우 레벨 잠금보다는 덜 세분화되어 있지만 동시성이 적당하며 오버헤드는 상대적으로 줄어듭니다.

테이블 레벨 잠금(Table-Level Locking)
전체 테이블에 대한 잠금을 의미합니다. 이는 동시성이 가장 낮지만, 잠금 및 잠금 해제에 대한 오버헤드가 가장 작습니다.

데이터베이스 레벨 잠금(Database-Level Locking)
이는 전체 데이터베이스에 대한 잠금으로, 전체 시스템에 영향을 미칠 수 있는 대량의 작업(예: 백업, 복구 등)을 수행할 때 사용됩니다.

각 레벨의 잠금은 잠금의 범위와 성능 사이의 균형을 찾는데 도움이 됩니다. 가장 세부적인 레벨(행 레벨)에서 가장 넓은 레벨(데이터베이스 레벨)까지 잠금을 적절하게 설정하면, 동시성과 성능 사이에 적절한 균형을 찾을 수 있습니다.

0개의 댓글