핵심: 인덱스는 lock scope를 줄인다

잠금 범위는 UPDATE 문법보다
어떤 경로로 대상을 찾는지에 더 크게 좌우된다

같은 조건이라도 `status='ACTIVE'`를 찾기 위해 넓게 스캔하면 그만큼 경합이 커지고, 인덱스로 좁게 찾으면 잠금도 대상 주변에 머문다.

예시 테이블: users(id, name, status) 비교: status 인덱스 없음 / 있음
UPDATE users SET name = 'X' WHERE status = 'ACTIVE';
status 인덱스 없음 Full Table Scan으로 많은 행을 확인
status 인덱스 있음 Index Range Scan으로 필요한 구간만 접근
찾는 범위
`ACTIVE` 여부를 확인하려고 테이블 대부분을 훑기 쉽다.
`status='ACTIVE'` 값이 모인 구간으로 바로 들어간다.
잠금 범위
스캔한 구간까지 잠금 후보가 넓어진다

대상이 아닌 행도 탐색 경로에 걸리면 불필요한 대기와 충돌이 늘 수 있다.

대상 행 근처만 잠금이 집중된다

같은 UPDATE라도 필요한 행 위주로 잠가서 lock scope를 작게 유지한다.

운영 결과
경합 증가, 데드락 확률 상승

조회와 갱신이 더 넓은 범위에서 부딪혀 동시성이 쉽게 떨어진다.

검색 속도 + 동시성 모두 개선

인덱스는 성능뿐 아니라 잠금 면적 자체를 줄이는 실무 도구가 된다.

실무 메모 InnoDB에서는 WHERE 조건 인덱스가 잠금 충돌 범위를 줄이는 데 특히 중요하다. Oracle은 MVCC로 실제 갱신 행 중심으로 잠그는 편이지만, 핵심은 여전히 좁게 찾을수록 좁게 잠근다는 점이다.