>  기사  >  데이터 베이스  >  Mysql-InnoDB 트랜잭션 학습 소개

Mysql-InnoDB 트랜잭션 학습 소개

coldplay.xixi
coldplay.xixi앞으로
2021-01-02 09:41:071937검색

mysql 비디오 튜토리얼 칼럼은 InnoDB 사물 학습

Mysql-InnoDB 트랜잭션 학습 소개

권장(무료): mysql 비디오 튜토리얼

사물의 기본 개념

사물의 특성(ACID )

  • 원자성

  • 일관성

  • isolation

  • durability

종류

  • 평평한 것들

  • 저장 포인트가 있는 평평한 것들에 테이프를 붙이세요

  • 중첩 트랜잭션 연결

  • 분산 트랜잭션

사물 구현

redo 및 undo redo
redo: 사물의 원자성, 내구성, 물리학 보장 로그는 기본적으로 순차적으로 작성됩니다.
undo: 일관성 보장 사물, 논리적 로그, 실행 취소는 사물 롤백 및 mvcc에 사용되는 다시 실행을 생성하며 무작위 읽기 및 쓰기

redo

redo 로그 버퍼
redo 로그 파일

사물의 지속성을 달성하기 위해 커밋 메커니즘에서 로그 강제 실행

redo 로그 버퍼 -> 파일 시스템 캐시-> (fsync) 디스크 파일

innodb_flush_log_at_trx_commit
0: 마스터 스레드가 디스크에 쓰기를 완료합니다.
1: 기본값, 모든 트랜잭션 제출은 fsync여야 합니다.
2: 파일 시스템 캐시에 쓰기, 수행 fsync를 실행하지 않음

log 블록

512바이트는 디스크 산 영역의 크기와 일치하므로 로그 쓰기가 원자성이므로 이중 쓰기가 필요하지 않습니까? 기술

Mysql-InnoDB 트랜잭션 학습 소개

은 512 - 12 -8 = 492로 나누어집니다.
Redo 로그 헤더: 12바이트
Redo 로그 내용:
Redo 로그 테일: 8바이트

LOG_BLOCK_HAR_NO [4바이트]: 로그 블록의 위치에 로그 버퍼
LOG_BLOCK_HAR_DATA_LEN [2바이트]: 로그 블록이 차지하는 크기
LOG_BLOCK_FIRST_REC_GROUP [2바이트]: 첫 번째 로그의 오프셋
LOG_BLOCK_CHECKPOINT_NO [4바이트]: 마지막으로 기록된 체크포인트 바이트 4의 값은? ?

log groupup

여러 개의 Redo 로그 파일로 구성

redo 로그 파일

Mysql-InnoDB 트랜잭션 학습 소개

redo 로그 형식

Mysql-InnoDB 트랜잭션 학습 소개

redo_log_type: 리두 로그 유형
space: 테이블스페이스 ID
page_no : 페이지 오프셋

LSN(로그 시퀀스 번호)

8바이트, 단조 증가
의미:
총 리두 로그 쓰기 양
체크포인트 위치
페이지 버전

Mysql-InnoDB 트랜잭션 학습 소개

undo

실행 취소 세그먼트:

(128) 롤백 세그먼트 > (1024) 공유 테이블 공간의 실행 취소 세그먼트, 트랜잭션 동시성은 128*1024로 제한됩니다.

실행 취소 로그 형식

실행 취소 로그 삽입
실행 취소 로그 업데이트

Mysql-InnoDB 트랜잭션 학습 소개

제거

그룹 커밋

사물의 격리 수준

READ UNCOMMIT: 쿼리 문이 잠기지 않으며 커밋되지 않은 행을 읽을 수 있습니다(Dirty Read).
READ COMMIT: 레코드 잠금만 레코드에 추가되고, 레코드 사이에는 간격 잠금이 추가되지 않으므로 잠긴 레코드 근처에 새 레코드를 삽입하는 것이 허용되므로 쿼리 문을 여러 번 사용할 경우 결과가 달라질 수 있습니다. (비반복 읽기) EPEATABLE READ: 읽기 동일한 범위의 데이터가 첫 번째 쿼리의 스냅샷을 반환합니다. 다른 데이터 행은 반환되지 않지만 팬텀 읽기(Phantom Read)가 발생할 수 있습니다.
SERIALIZABLE: InnoDB 모든 쿼리 문에 공유 잠금을 암시적으로 추가하면 다음 문제가 해결됩니다.

더티 읽기: 트랜잭션에서 다른 트랜잭션의 커밋되지 않은 데이터를 읽습니다.
반복 불가능한 읽기: 트랜잭션에서 동일한 행 레코드에 다른 결과가 두 번 액세스됩니다.
팬텀 읽기: 트랜잭션에서 동일한 범위의 레코드를 읽으면 다른 트랜잭션이 이 범위에 새 레코드를 추가합니다.

반복 불가능한 읽기의 이유는 READ COMMITED 격리 수준에서 스토리지 엔진이 레코드를 쿼리할 때 행 잠금을 추가하지 않고 ID = 3으로 레코드를 잠그기 때문입니다.

분산된 사물

XA

리소스 관리자: 트랜잭션 리소스에 접근하는 방법 제공
트랜잭션 관리자: 글로벌 사물에 참여하는 다양한 사물을 조정
응용 프로그램: 글로벌 사물에서 사물을 정의하고 작업을 지정하는 데 편리함

Mysql-InnoDB 트랜잭션 학습 소개

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

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