본문 바로가기
공부/Mysql

mysql 잠금: 명시적 잠금, 묵시적 잠금

by 띵커베르 2023. 2. 4.
728x90
  • 명시적 사전 적 의미
    • 내용이나 뜻을 분명하게 드러내 보이는, 또는 그런 것.
  • 묵시적 사전 적 의미
    • 직접적으로 말이나 행동으로 드러내지 않고 은연중에 뜻을 나타내 보이는. 또는 그런 것.
  • 명시적 락
    • SQL 문을 통해 사용자가 명시적으로 요청하는 잠금
    • 사용자는 LOCK TABLES 문을 사용하여 테이블 잠금을 요청할 수 있다.
    • 테이블 데이터에 대한 동시 엑세스를 제어하고 데이터 일관성을 보장한다.
    • 일반적으로 여러 사용자가 동일한 데이터를 수정해야 하는 시나리오에서 사용되며, 잠금은 한번에 한 사용자만 데이터를 수정할 수 있다.
    • InnoDB 테이블의 경우에는 스토리지 엔진 차원에서 레코드 기반의 잠금을 제공하기 때문에 단순 데이터 변경 쿼리로 인해 묵시적 테이블 락이 설정되지는 않는다.
      • 더 정확히는 InnoDb 테이블에도 테이블 락이 설정되지만 대부분의 dml 쿼리에서는 무시되고 ddl의 경우에만 영향을 미친다.
  • 묵시적 잠금(암시적 잠금)
    • mysql 서버에 의해 자동으로 생성되고 관리되는 잠금.
    • 데이터 일관성을 보장하고 교착상태를 방지하는데 사용된다.
    • 일반적으로 사용자가 데이터를 삽입, 업데이트, 삭제 할때 행, 테이블 또는 전체 데이터베이스를 잠그는 데 사용된다.
    • 트랜잭션이 커밋 또는 롤백되면 자동으로 잠금은 해지된다.
    • MyISAM, MEMORY 스토리지 엔진의 경우 묵시적 잠금에 속한다.(dml 쿼리 실행시 자동으로 잠금 획득)
  • 일반적으로 묵시적 잠금은 명시적 잠금보다 더 효율적이고 교착 상태에 덜 취약하다.
728x90

댓글