유튜브블로그Top 10
내 프로필

데브허브 안내
소개업데이트 소식

데브허브 커뮤니티

[10분 테코톡] 한스의 MySQL의 락

우아한테크

2025. 7. 25.

0

#db
#backend
  • 락은 여러 트랜잭션이 동시에 같은 데이터에 접근할 때 데이터의 일관성과 무결성을 보장하기 위한 잠금 메커니즘입니다. 🔒
  • 락이 없으면 동시성 문제로 인해 예상치 못한 데이터 변경이나 손실이 발생할 수 있습니다. 💥
  • 테이블 락은 전체 테이블을 잠그므로 동시성 문제는 해결하지만, 관련 없는 데이터 접근까지 막아 성능 저하를 초래합니다. 🐢
  • InnoDB는 기본적으로 레코드 락을 사용하여 동시성을 최적화하며, 최소한의 잠금을 시도합니다. 🎯
  • 레코드 락은 인덱스에 잠금을 거는 방식으로 작동하며, DDL(스키마 변경) 작업에는 테이블 락이 사용됩니다. 🌳
  • 인덱스가 없는 컬럼으로 조건을 걸면 Full Scan이 발생하고, InnoDB는 스캔한 모든 레코드를 잠가 사실상 테이블 락과 유사하게 작동하여 성능 문제를 일으킵니다. 🚫
  • 인덱스가 있는 컬럼 조건에서도 새로운 데이터 삽입(팬텀 현상)을 방지하기 위해 갭 락(Gap Lock)과 넥스트 키 락(Next Key Lock)이 사용됩니다. 👻
  • 갭 락은 인덱스 레코드 사이의 공간을 잠가 새로운 레코드 삽입을 막고, 넥스트 키 락은 레코드 락과 갭 락의 조합입니다. 🚧
  • 가장 효율적인 락 사용을 위해서는 id와 같은 Primary Key(PK) 또는 유니크 인덱스 컬럼을 WHERE 절 조건으로 사용하는 것이 좋습니다. ✨

Recommanded Videos