MySQL InnoDB 잠 금 에 대한 요약

5741 단어 MySQLInnoDB자물쇠.
1.  Shared and Exclusive Locks
shared lock(번역:공유 자물쇠)
exclusive lock(번역:자물쇠,독점 자물쇠)
InnoDB 는 두 가지 유형의 자물쇠,공유 자물쇠(shared locks)와 배타 자물쇠(exclusive locks)가 있 는 표준 줄 잠 금 을 실현 했다.
A shared (S) lock permits the transaction that holds the lock to read a row.
An exclusive (X) lock permits the transaction that holds the lock to update or delete a row.
공유 자 물 쇠 는 이 자 물 쇠 를 가 진 트 랜 잭 션 에서 한 줄 을 읽 을 수 있 습 니 다.
열 쇠 는 이 자 물 쇠 를 가지 고 있 는 트 랜 잭 션 을 업데이트 하거나 줄 을 삭제 할 수 있 습 니 다.
트 랜 잭 션 T1 이 줄 r 에 있 는 공유 잠 금(S)을 가지 고 있다 면 서로 다른 트 랜 잭 션 T2 의 요청 은 다음 과 같이 처 리 됩 니 다. 
  • T2 의 S 잠 금 요청 은 즉시 수 여 될 수 있다.그 결과 T1 과 T2 는 행 r 에 모두 S 자 물 쇠 를 가지 고 있 었 다.
  • T2 의 X 잠 금 요청 은 즉시 부여 되 지 않 습 니 다.
  • 트 랜 잭 션 T1 이 줄 r 에 있 는 자물쇠(X)를 가지 고 있다 면,서로 다른 트 랜 잭 션 T2 의 요청 으로 r 에 있 는 어떤 종류의 자물쇠 도 즉시 부여 할 수 없습니다.반면 트 랜 잭 션 T2 는 트 랜 잭 션 T1 이 줄 r 에 있 는 자 물 쇠 를 풀 때 까지 기 다 려 야 합 니 다.
    2.  Intention Locks
    Intention Locks(번역:의향 잠 금)
    InnoDB 는 다 중 입자 잠 금 을 지원 하 며 줄 잠 금과 시계 잠 금 이 공존 할 수 있 습 니 다.예 를 들 어 LOCK TABLES...WRITE 와 같은 문 구 는 지정 한 표 에 대해 열 쇠 를 사용 합 니 다(X 자물쇠).이 노 DB 는 여러 입도 단계 에서 자 물 쇠 를 구현 하기 위해 의향 자 물 쇠 를 사용 했다.의향 자 물 쇠 는 표 급 자물쇠 입 니 다.나중에 표 의 한 줄 에 어떤 종류의 자 물 쇠 를 사용 해 야 하 는 지 알려 줍 니 다. 
    두 가지 유형의 의향 자물쇠 가 있 습 니 다.
  • 의향 공유 자물쇠(IS)는 업무 가 표 의 한 줄 에 공유 자 물 쇠 를 설정 할 계획 이 라 고 밝 혔 다.
  • 의향 배타 자물쇠(IX)는 업무 가 표 의 한 줄 에 배타 자 물 쇠 를 설정 할 계획 임 을 나타 낸다.
  • 예 를 들 어 SELECT...LOCK IN SHARE MODE 는 IS 자 물 쇠 를 설정 하고 SELECT..FOR UPDATE 는 IX 자 물 쇠 를 설정 합 니 다.
    의향 잠 금 협정 은 다음 과 같다.
    트 랜 잭 션 이 표 의 한 줄 의 공유 자 물 쇠 를 얻 기 전에 먼저 표 의 IS 자물쇠 나 더 강 한 자 물 쇠 를 가 져 와 야 합 니 다.
    트 랜 잭 션 이 표 의 한 줄 의 자 물 쇠 를 가 져 오기 전에 표 의 IX 자 물 쇠 를 먼저 가 져 와 야 합 니 다. 
    표 급 잠 금 형식 호환성 은 다음 그림 과 같 습 니 다:

    자물쇠 가 기 존 자물쇠 와 호 환 되면 요청 한 사 무 를 부여 하지만 기 존 자물쇠 와 충돌 하면 이 자 물 쇠 를 부여 하지 않 습 니 다.충돌 한 기 존 자물쇠 가 풀 릴 때 까지 기다 리 십시오.잠 금 요청 이 기 존의 잠 금 과 충돌 하고 잠 금 이 걸 려 서 부여 되 지 않 으 면 오류 가 발생 할 수 있 습 니 다.
    의향 잠 금 은 전체 표 요청(예 를 들 어 LOCK TABLES...WRITE)을 제외 하고 다른 내용 을 막 지 않 습 니 다.잠 그 려 는 주요 목적 은 누군가가 표 의 줄 을 잠 그 고 있 거나 표 의 줄 을 잠 그 려 는 것 을 나타 내 는 것 이다.
    3.  Record Locks
    레코드 잠 금 장치(번역:기록 잠 금 장치)
    A record lock is a lock on an index record. 
    기록 자 물 쇠 는 색인 기록 의 자물쇠 이다.예 를 들 어 SELECT c1 FROM t WHERE c1=10 FOR UPDATE;  t.c1 값 이 10 인 줄 을 삽입,업데이트 또는 삭제 하 는 것 을 방지 합 니 다.
    기록 자 물 쇠 는 항상 색인 기록 을 잠 금 합 니 다.표 가 정의 되 지 않 아 도 마찬가지 입 니 다.표 에 색인 이 없 으 면 InnoDB 는 숨겨 진 집합 색인 을 만 들 고 이 색인 을 잠 금 기록 에 사용 합 니 다.
    4.  Gap Locks
    갭 잠 금 장치(번역:간극 잠 금 장치)
    A gap lock is a lock on a gap between index records, or a lock on the gap before the first or after the last index record.  
    간극 자 물 쇠 는 색인 기록 사이 의 간극 에 있 는 자물쇠 나 첫 번 째 색인 기록 전이 나 마지막 색인 기록 후의 간극 에 있 는 자물쇠 이다.
    예 를 들 어 c1 BETWEEN 10 및 20 에서 SELECT c1 을 업데이트 할 수 있 습 니 다.  다른 트 랜 잭 션 이 t.c1 열 에 값 15 를 삽입 하 는 것 을 방지 합 니 다.이 열 에 이러한 값 이 있 든 없 든 범위 내 모든 기 존 값 간 의 간격 이 잠 겨 있 기 때 문 입 니 다.
    간격 은 하나의 색인 값,여러 개의 색인 값,심지어 비어 있 을 수 있 습 니 다.
    간극 잠 금 은 성능 과 동시성 간 의 평가 의 일부분 으로 일부 사무 격 리 단계 에서 사용 되 며 다른 단계 에 서 는 사용 되 지 않 습 니 다.
    유일한 색인 잠 금 줄 을 사용 하여 유일한 줄 을 검색 하 는 문 구 는 간격 잠 금 이 필요 없습니다.
    예 를 들 어 id 열 에 유일한 색인 이 있 으 면 아래 문 구 는 id 값 이 100 인 줄 에 만 index-record 자 물 쇠 를 사용 합 니 다.다른 세 션 이 앞 에 있 는 간격 으로 줄 을 삽입 하 든 말 든:
    
    SELECT * FROM child WHERE id = 100;
    id 열 에 색인 이 없 거나 유일한 색인 이 아니라면 이 문 구 는 앞의 간격 을 잠 글 것 입 니 다.
    여기 서 주의해 야 할 것 은 서로 다른 업무 가 한 사이 에 충돌 하 는 자 물 쇠 를 가 질 수 있다 는 점 이다.
    예 를 들 어 트 랜 잭 션 A 는 한 간격 에 공유 간극 잠 금(gap S-lock)을 가 질 수 있 고 트 랜 잭 션 B 는 같은 간격 에 배타 간극 잠 금(gap X-lock)을 가진다.충돌 간극 잠 금 을 허용 하 는 이 유 는 하나의 기록 이 하나의 색인 에서 지 워 지면 서로 다른 사무 가 가지 고 있 는 간극 잠 금 이 합 쳐 져 야 하기 때 문 입 니 다.
    InnoDB 중간 잠 금 의 유일한 목적 은 다른 업무 의 삽입 간격 을 방지 하 는 것 이다.간극 자 물 쇠 는 공존 할 수 있다.하나의 사무 가 얻 은 간극 자 물 쇠 는 다른 사무 가 같은 간극 의 간극 자 물 쇠 를 얻 는 것 을 막 지 않 는 다.공유 와 독점 간격 잠 금 사이 에는 차이 가 없다.그들 은 서로 충돌 하지 않 고 같은 기능 을 수행한다.
    5.  Next-Key Locks
     A next-key lock is a combination of a record lock on the index record and a gap lock on the gap before the index record.
    next-key 자 물 쇠 는 색인 기록 에 있 는 기록 자물쇠 와 색인 기록 전의 간극 자물쇠 의 조합 입 니 다.
    InnoDB 에서 줄 잠 금 을 실행 하 는 방식 은 다음 과 같 습 니 다.표 색인 을 검색 하거나 검색 할 때 만 나 는 색인 기록 에 공유 자물쇠 나 배타 자 물 쇠 를 설정 합 니 다.따라서 줄 잠 금 은 사실상 색인 기록 잠 금 이다.색인 기록 에 있 는 next-key 자물쇠 도 이 색인 기록 전의'간극'에 영향 을 줄 수 있 습 니 다.즉,next-key 자 물 쇠 는 색인 기록 자물쇠 에 색인 기록 전의 간극 자물쇠 이다.한 세 션 이 색인 에 있 는 기록 R 에 공유 자물쇠 나 배타 자물쇠 가 있다 면 다른 세 션 은 색인 순서에 따라 R 이전의 간격 에 새로운 색인 기록 을 삽입 할 수 없습니다.
    색인 이 10,11,13,20 을 포함한다 고 가정 합 니 다.이 색인 이 가능 한 next-key 잠 금 은 다음 구간 을 덮어 씁 니 다.
    
    (negative infinity, 10]
    (10, 11]
    (11, 13]
    (13, 20]
    (20, positive infinity)
    기본적으로 InnoDB 는 REPEATABLE READ 트 랜 잭 션 격 리 단 계 를 사용한다.이러한 상황 에서 InnoDB 는 환상 줄 을 막 기 위해 next-key 자 물 쇠 를 사용 하여 검색 과 색인 검색 을 한다.
    6.  Insert Intention Locks
    삽입 의도 잠 금(역:의향 잠 금 삽입)
    의향 자 물 쇠 를 삽입 하 는 것 은 일종 의 간극 자물쇠 로 INSERT 작업 이 줄 을 삽입 하기 전에 설정 한 것 이다.이 자 물 쇠 는 여러 개의 업무 가 같은 색인 사이 에 삽입 되 어 있 으 면 이 사이 의 같은 위치 에 삽입 되 지 않 았 다 면 상대방 을 기다 릴 필요 가 없다 는 것 을 나타 낸다.값 이 4 와 7 인 색인 기록 이 있다 고 가정 합 니 다.삽입 값 이 각각 5 와 6 인 독립 된 사 무 를 시도 합 니 다.삽입 줄 의 배타 적 자 물 쇠 를 얻 기 전에 모든 사 무 는 삽입 의향 으로 4 와 7 사이 의 간격 을 잠 그 지만 서 로 를 막 지 않 습 니 다.줄 이 충돌 하지 않 기 때 문 입 니 다.
    7.  AUTO-INC Locks
    AUTO-INC 자 물 쇠 는 AUTO 가 있 는 특수 한 시계 급 자물쇠 입 니 다.INCREMENT 열 에 있 는 표 의 사 무 를 얻 을 수 있 습 니 다.가장 간단 한 경우,만약 하나의 사무 가 표 에 값 을 삽입 하고 있다 면,모든 다른 사 무 는 첫 번 째 사무 가 삽 입 된 줄 에서 연속 적 인 키 값 을 받 을 수 있 도록 이 표 에 대한 삽입 을 기 다 려 야 한다.
    https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html
    이상 은 MySQL InnoDB 잠 금 에 관 한 상세 한 내용 입 니 다.MySQL InnoDB 잠 금 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 하 세 요!

    좋은 웹페이지 즐겨찾기