2024.07.23 gap lock
gap lock
MySQL Gap Lock 다시보기
우리가 일반적으로 알고 있는 데이터베이스 서버의 잠금(Lock)은 레코드 자체에 대한 잠금(Record Lock)이에요. 어떤 트랜잭션에서 레코드를 변경하기 위해서는 그 레코드를 잠그고, 그 동안은 다른
medium.com
음 pk와 uk는 gap lock을 사용하지 않고 record lock만 사용.
non unique secondary index는 항상 record lock과 gap lock을 사용.
값이 없을 때는 record lock 없이 gap lock만 획득 -> select, delete가 대기 없이 실행.
4, 5가 'INSERT Intention Gap Lock'을 필요로 하고 서로의 gap lock을 기다리면서 dead lock이 발생.
pk, uk는 gap lock 없이 record lock만 사용하지만 값이 없을 때는 gap lock만 사용하고 record lock을 사용하지 않는다
아래 글의 예제와는 무엇이 다른가?
아래 예제에서는 insert 시 잠금대기를 하는데..
음 gap lock에 대해 더 봐야겠다.
2024.07.21 select for update
select for update 시 행이 없다면? select .. for update 대상 유무에 따른 잠금 상태개요 InnoDB 엔진은 기본적으로 DDL 쿼리를 제외한 모든 데이터 조작 작업에서 테이블 락을 사용하지 않고 레코드 기반의
gisungcu.tistory.com