>  기사  >  데이터 베이스  >  Mysql-InnoDB 잠금 관련 내용 소개

Mysql-InnoDB 잠금 관련 내용 소개

不言
不言앞으로
2019-02-21 12:00:492079검색

이 기사의 내용은 Mysql-InnoDB 잠금의 도입에 관한 것입니다. 이는 특정 참고 가치가 있으므로 도움이 될 수 있습니다.

잠금 유형

행 수준 잠금

잠금 모드는 LOCK_S 및 LOCK_X만 있습니다. 다른 FLAG는 앞서 언급한 LOCK_GAP, LOCK_REC_NOT_GAP 및 LOCK_ORDINARY 및 LOCK_INSERT_INTENTION의 네 가지 설명에 사용됩니다. (관련 권장 사항: MySQL 튜토리얼)

LOCK_REC_NOT_GAP

LOCK_GAP

LOCK_ORDINARY(Next-Key Lock)

LOCK_INSERT_INTENTION

static const byte lock_compatibility_matrix[5][5] = {
/** IS IX S X AI /
/ IS / { TRUE, TRUE, TRUE, FALSE, TRUE},
/ IX / { TRUE, TRUE, FALSE, FALSE, TRUE},
/ S / { TRUE, FALSE, TRUE, FALSE, FALSE},
/ X / { FALSE, FALSE, FALSE, FALSE, FALSE},
/ AI / { TRUE, TRUE, FALSE, FALSE, FALSE}
};

GAP 유형의 경우 (잠금 개체가 supremum에 설정되거나 적용된 잠금 유형이 LOCK_GA P임) 의도된 잠금을 삽입할 때 잠금을 기다릴 필요가 없습니다. 이는 동일한 GAP에 대해 서로 다른 세션이 서로 다른 유형의 잠금을 적용할 수 있고 GAP 잠금 자체가 서로 충돌하지 않도록 설계되었기 때문입니다. LOCK_ORDINARY 또는 LOCK_REC_NOT_GAP 유형 잠금의 LOCK_GAP 유형 잠금은 기다릴 필요가 없습니다.
LOCK_GAP 유형 잠금은 LOCK_REC_NOT_GAP 유형 잠금 개체를 기다릴 필요가 없습니다.
모든 잠금 요청은 의도된 잠금을 기다릴 필요가 없습니다. 삽입됩니다.

테이블 수준 잠금

InnoDB의 테이블 수준 잠금에는 LOCK_IS, LOCK_IX, LOCK_X, LOCK_S 및 LOCK_AUTO_INC 잠금의 5가지 잠금 모드가 포함되어 있습니다. 잠금 간의 호환성은 lock_compatibility_matrix 배열의 정의를 따릅니다.

InnoDB 테이블 수준 잠금의 목적은 DDL 및 DML의 동시성 문제를 방지하는 것입니다. 그러나 버전 5.5에서 MDL 잠금이 도입된 이후에는 InnoDB 계층에서 테이블 수준 잠금의 의미가 그다지 크지 않습니다. MDL 잠금 자체는 대부분의 기능을 다루지 않습니다.

의도 잠금은 테이블 수준입니다. IS 및 IX 잠금은 서로 충돌하지 않지만 테이블 수준 S/X 잠금과 충돌합니다.

레코드에 S 잠금 또는 X 잠금을 추가하는 경우 동일한 테이블에 해당 의도 잠금 또는 잠금 강도가 더 높은 테이블 수준 잠금이 있는지 확인해야 합니다.



위 내용은 Mysql-InnoDB 잠금 관련 내용 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제