반응형 MySQL InnoDB lock1 [MYSQL] 조회수 등의 카운터 값 갱신 업데이트 쿼리의 데드락 현상 웹서비스 등에서 특정 게시물의 조회수 등을 갱신하는 등의 로직이 있는 경우, "UPDATE 테이블 SET counter = counter + 1 WHERE key=OO" 유형의 쿼리를 사용하게 되는데, MySQL(InnoDB)에서 위와 같은 패턴의 업데이트 쿼리를 사용하는 경우 데드락이 발생할 수 있으므로 유의할 필요가 있다. 위와 같은 업데이트 쿼리를 처리하기 위해 MySQL은 먼저 counter 필드 값을 읽게 되는데, 이 때 다른 트랜잭션에서 값을 변경하는 것을 막기 위해 해당 레코드에 Shared Lock을 획득하고, 실제 업데이트를 수행할 때 다시 Exclusive Lock을 획득하게 된다. 업데이트 쿼리를 풀어서 보면 아래와 같다. BEGIN; SELECT @var := counter FROM.. IT와/Database 2021. 12. 15. 이전 1 다음 💲 추천 글 반응형