[Back-End] 갭락(Gap Lock)과 넥스트키 락(Next-Key Lock)
·
Back-end
매일메일을 통해하루하루 CS 공부하기 앞서 배운 내용에서 MVCC 동시성 제어 방식에서 Gap Lock과 Next-Key Lock을 통해 Phantom Read를 방지할 수 있다고 배웠었다. 그렇다면, 각 Lock과 Phantom Read란 무엇일까? 제대로 파헤쳐보자  Phantom Read란 무엇인가트랜잭션이 동일한 조건의 쿼리를 반복 실행할 때, 나중에 실행된 쿼리에서 처음에는 존재하지 않았던 새로운 행이 나타나는 현상. 읽기 일관성을 유지하는 과정에서 발생할 수 있는 문제로, 데이터의 삽입/삭제가 다른 트랜잭션에 의해 이루어질 때 발생함.-- 트랜잭션 A 시작START TRANSACTION;-- 트랜잭션 A 첫 번째 조회SELECT * FROM orders WHERE amount > 150;-- ..
[Back-End] Shared Lock과 Exclusive Lock 이란?
·
Back-end
매일메일을 통해하루하루 CS 공부하기! 공유 락과 배타 락은 데이터 일관성과 무결성을 위해 사용되는 락 유형이다. 공유 락 (Shared Lock)이란?읽기 락 (Read Lock)이라고 부르며, 공유 락이 걸린 데이터는 SELECT 연산만 가능하며, 쓰기 (UPDATE, DELETE) 연산은 불가능하다. 공유 락이 걸린 데이터에 대해서 다른 트랜잭션에서도 Shared Lock을 획득할 수 있지만, Exclusive Lock은 획득할 수 없다. 즉, 공유 락을 사용하면 트랜잭션 내에서 조회한 데이터의 무결성을 보장. SELECT * FROM table_name WHERE id = 1 FOR SHARE;  배타 락 (Exclusive Lock)이란?쓰기 락 (Write Lock)이라고 부르며, 배타 락을 ..