2편에서 MVCC가 읽기와 쓰기의 충돌을 어떻게 줄이는지 살펴봤다.하지만 실무에서는 이런 상황을 훨씬 자주 마주친다.“읽기 쿼리는 잘 되는데, UPDATE가 갑자기 멈췄다.” “트랜잭션이 끝났는데도 락 대기가 풀리지 않는다.”이 문제의 원인은 대부분 MVCC가 해결하지 못한 영역, 즉 락(Lock)에 있다.InnoDB에서 락은 왜 필요한가MVCC가 있어도 모든 상황을 과거 버전 읽기로 해결할 수는 없다.특히 다음 상황에서는 동시 쓰기 충돌을 반드시 막아야 한다.같은 행을 동시에 UPDATE존재 여부를 전제로 한 INSERT범위 조건을 만족하는 행 수정이때 InnoDB는 과거 버전을 보여주는 대신, 락으로 질서를 강제한다.Row Lock - 가장 기본적인 락가장 직관적인 락은 Row Lock이다.특정 행 ..