InnoDB 자물쇠
Lock 과 Latch
latch 는 경량급 자물쇠 로 빗장 자물쇠 라 고 합 니 다.latch 는 자바 의 synchronize 와 유사 하지만 Lock 은 더욱 거시적인 것 입 니 다.latch 는 프로그램 적 제어,제어 프로그램의 논리 라 고 볼 수 있 지만 lock 은 데이터 에 대한 보호 입 니 다.
Lock
Latch
대상
사무.
보호 하 다.
데이터베이스 내용
지속 시간
전체 사무 과정
패턴
행 자물쇠,시계 자물쇠,의향 자물쇠
잠 금 처리
wait-for graph,time out 등 진법 으로 처리 합 니 다.
존재 위치
Lock Manager 의 해시 표 중
InnoDB 의 자물쇠
이 노 DB 는 두 개의 표준 자 물 쇠 를 실 현 했 는데 이 두 자 물 쇠 는 줄 디자인 을 바탕 으로 한 것 이다.
의향 자물쇠:InnoDB 가 실현 하 는 특수 한 시계 자 물 쇠 는 다음 에 얻 을 자물쇠 의 유형 을 밝 히 고 의향 자 물 쇠 는 다음 과 같은 두 가지 로 나 뉜 다.
잠 금 관련 Sql
#
show engine innodb status;
#
show full processlist;
# schema
select * from information_schema.INNODB_TRX \G
일치 성 비 잠 금 읽 기
InnoDB 의 읽 기 정책 은 데 이 터 를 읽 을 때 잠 금 을 추가 하지 않 고 X 잠 금 이 풀 리 기 를 기다 리 지 않 아 도 데 이 터 를 읽 을 수 있 습 니 다.이 때 는 데이터 스냅 샷 버 전 을 읽 습 니 다.모든 데 이 터 는 동시 다발 적 인 업무 가 다 르 기 때문에 여러 개의 스냅 샷 데이터 가 존재 할 수 있 습 니 다.이것 이 바로 여러 버 전의 스냅 샷 입 니 다.
InnoDB 는 다 중 버 전의 스냅 샷 병행 제어 기술 인 MVVC 기술 로 데 이 터 를 읽 는 스냅 샷 버 전 을 제어 합 니 다.MVVC 기술 도 이 노 DB 가 비 잠 금 판독 을 실현 하 는 핵심 기술 이다.
격 리 단계 에 따라 스냅 샷 버 전의 확인 방식 이 다 릅 니 다.InnoDB 는 다음 두 단계 에서 비 잠 금 읽 기 기술 을 사용 합 니 다.데이터 스냅 샷 버 전 확인 방식 은 다음 과 같 습 니 다.
MVVC 기술 에서 데이터 스냅 샷 버 전 을 확정 할 때 사무 번 호 를 통과 하기 때문에 사무 번 호 는 관건 입 니 다!
잠 금 추가 Sql 보이 기
InnoDB 는 잠 금 문 구 를 표시 하 는 것 을 지원 하 며,Select 에 키 문 구 를 추가 하면 X 와 S 자 물 쇠 를 추가 할 수 있다.이 문구 들 은 Sql 표준 이 아 닌 InnoDB 특유 의 것 이다.
#Select :
# X ;
select ... for update;
# S ;
select ... lock in share mode;
자동 성장 필드 와 잠 금
InnoDB 자체 성장 알고리즘 은 두 가지 모델 이 있 는데 하 나 는 경량급 상호 배척 량 이 고 하 나 는 시계 자물쇠 이 며 MyISAM 은 전체 시계 자 물 쇠 를 사용한다.
InnoDB 에서 증가 하 는 열 은 색인 의 첫 번 째 열 이 어야 하고 색인 이 어야 합 니 다.
외 키 와 자물쇠
InnoDB 는 자동 으로 외부 키 에 색인 을 추가 합 니 다.이것 은 시계 자 물 쇠 를 피 할 수 있 습 니 다.외부 키 가 있 으 면 InnoDB 는 Insert 에 있 을 때 부모 표 데 이 터 를 check 합 니 다.이것 은 부모 표 의 암시 적 인 select 작업 이 있 습 니 다.이 select 는 일치 성 비 잠 금 읽 기 를 사용 하지 않 고 Select id from parent 를 사용 합 니 다.table in lock share model,즉 S 자 물 쇠 를 주동 적 으로 추가 합 니 다.따라서 외부 키 는 데이터 의 완전 성 을 보장 할 수 있 지만 성능 위험 도 있다.
잠 금 알고리즘
InnoDB 는 세 가지 줄 잠 금 알고리즘 이 있 습 니 다.
이 세 종류의 자 물 쇠 는 서로 다른 사무 격 리 단계 에서 사용 하지 마라.예 를 들 어 InnoDB 가 Nex-Key Lock 알고리즘 을 통 해 범위 데 이 터 를 잠 그 면 환 독 을 피 할 수 있 습 니 다.
필드 가 유일한 색인 이 라면 Next-Key Lock 은 Record Lock 으로 강 등 될 수 있 습 니 다.
자물쇠 가 가 져 온 문제
잠 금 은 데이터베이스 업 무 를 잘 지원 하고 업무 의 격 리 성 을 확보 할 수 있 지만 잠 금 의 부정 확 한 사용 도 문 제 를 가 져 올 수 있 습 니 다.업무 의 격 리 단계 에서 각 격 리 단계 에 어느 정도 문제 가 있 는데 이것 이 바로 자물쇠 가 가 져 온 것 이다.
다음-키 잠 금:InnoDB 환 독 전략 해결
환 독 간단 한 설명 은 하나의 사 무 를 두 번 읽 을 때 서로 다른 줄 수 를 읽 는 것 이다.환 독 과 재 독 할 수 없 는 차이 점 은 중복 읽 을 수 없 는 것 은 같은 데이터 줄 을 두 번 읽 는 것 이 고 데이터 줄 의 내용 은 update 가 발생 하지만 환 독 은 insert 와 delete 에서 많이 발생 한 다 는 것 이다.
InnoDB 는 Next-Key Lock 알고리즘 을 Repeatable Read 의 잠 금 정책 으로 사용 하 는데 이런 방식 으로 범 위 를 잠 그 고 업무 격 리 성 을 확보한다.Read Committed 는 Record Lock 을 잠 금 정책 으로 사용 하여 트 랜 잭 션 격 리 성 을 보장 할 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 JSON 인덱싱 - aarondfrancis사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 말하지만 완전히 정확하지는 않습니다. MySQL로 JSON 열을 인덱싱하는 것은 완전히 가능합니다! 사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.