lock 2

MySQL 잠금과 Isolation level에 대해서

트랜잭션은 작업의 완전성을 보장해줍니다. 함께 수행되어야 하는 작업들을 묶어서 전부 완벽하게 처리하거나 하나라도 처리가 되지 않으면 다시 원상태로 돌리는 작업을 하는 것을 의미합니다. 잠금과 트랜잭션은 비슷하면서 다릅니다. 잠금: 동시성을 제어하기 위함 → 여러 커넥션에서 동시에 같은 레코드나 테이블에 접근하여 변경할 경우 결과적으로 예측할 수 없는 값이 됨. 트랜잭션: 데이터의 정합성을 보장하기 위함. 격리수준이라는 것을 정의할 수 있는데 이것은 하나 혹은 여러 트랜잭션에서 작업내용을 어떻게 공유하고 차단할지를 결정하는 것입니다. 트랜잭션 트랜잭션은 묶여있는 논리적 작업 단위들이 전부 반영되거나 오류발생 시 하나도 반영되지 않아야 합니다. MySQL의 스토리지 엔진에 따라도 차이가 있는데요. MyISA..

[데이터베이스] 동시 실행 제어 (Concurrency Control)와 공유 lock, 배타적 lock에 대해서

동시 실행 제어1. 락에 대해서 Lock - Based Protocol Lock이란 자원에 액세스하는 환경에서 순차적으로 제어할 수 있는 매커니즘이다. lock은 2가지로 분류할 수 있다. 1) Exclusive Lock : (X mode) 배타적 Lock은 여러 트랜잭션이 한 데이터에 접근할 수 없다. 2) Shared Lock : (S mode) 공유 락은 읽기 동안에만 일어나며 여러 트랜잭션이 동시에 한 데이터를 읽을 수 있다. Shared lock 끼리는 충돌하지 않는다. 하지만 Exclusive Lock과는 호환되지 않는다. 예를 보면 처음에 A 는 $100 B는 $200 을 가지고 있는데 B가 A에게 $50을 보내는 시나리오이다. T1이 자원 B에게 쓰기 위해서 배타적 락을 건다. B-50을 ..

반응형