MySQL의 거래와 격리 수준의 기본 요소

참고 : 노트의 단지 개인적인 이해, 권한 정확도가 없습니다

MySQL의 거래와 격리 수준의 기본 요소

A. 거래의 네 가지 기본 요소

원자 : 트랜잭션의 작업 중 하나를 실행하거나 다시 롤백됩니다

2. 일관성 : A와 B (500)는, 상호 전송이되지 쓰기 오류 논리 할 수있는, 개발자를위한 요구 사항이, (1000)는 변경되지 총 예금

3. 절연 : 멀티 트랜잭션 동시성이 서로 방해하지 않고 각각의 트랜잭션이 네 개의 격리 수준이 있다는 것을 확인하기 위해, 동시성 및 간섭 사이의 트레이드 오프 (깊이있는 지식 학습 잠금이 필요합니다)

4. 지속성이 : 커밋 된 트랜잭션되면, 데이터가 데이터베이스에 유지됩니다 반대를하고 거래하지 않는 한 다시 로그를 통해 달성 mysql을 압연 할 수 없습니다.

II. 트랜잭션 격리 수준

1. 읽기 커밋

트랜잭션은 B 커밋되지 않은 트랜잭션의 내용을 업데이트 할 읽는다

단점 : 롤백 B, A는 중간 상태 B에 판독하는 경우, 오염을 일으킬 수 읽기

2. 커밋 된 읽기

트랜잭션은, B 트랜잭션 커밋에 대한 업데이트를 읽을 수 있습니다

장점은 : 만 제출 B의 내용을 읽을 수 있기 때문에, 그래서 오염의 문제를 해결하기 위해 1을 읽어

단점 : 이전과 트랜잭션 A를 질의 한 후 결과는 일치하지 않을 수 있습니다 반복 불가능한 읽기가 발생할 수 있습니다

3. 반복 읽기

스냅 샷 트랜잭션은 결과에 영향을 미치지 않습니다, 기록은 항상 첫 번째 쿼리에 관계없이 B 업데이트 트랜잭션 커밋입니다 읽는다

장점 : 첫 번째 쿼리 스냅 샷, 그래서 비 반복 2를 읽고 문제를 해결하기 때문에 읽기 그것은 더러운 일을 읽고 표시되지 않습니다이다

단점 : 새 레코드 A를 거래 삽입 B 적은 쿼리보다하지만, 업무의 추가 및 삭제 변화는 팬텀 읽기를 일으킬 수 있습니다, 최신 녹음을 읽

확장 : 잠금 간격 (갭 잠금)에서 반복 읽기 당신은 (깊이 지식 잠금 배울 계속 필요) 일부 팬텀 읽기를 방지하기 위해 삽입 된 데이터를 방지하기 위해 범위를 잠글 수 있습니다

4. 직렬화

쿼리 데이터, B 데이터를 조회 할 수 있지만, B는 위조 할 수없는 데이터가 급증

장점 : 팬텀을 피할 수는 3 읽어 물론, 더러운 읽기 및 비 반복 읽기이 발생하지 않습니다

단점 : 없음 동시 CRUD

III. 격리로 인한 다른 문제

더러운 읽기 : 읽기 다른 사람이 커밋되지 않은 내용입니다

비 반복 읽기 : 다른 사람 업데이트의 내용을 읽어

팬텀 읽기 : Shique의 존재에 삽입 또는 삭제 다른 사람의 내용 만 추가 및 삭제를 읽을 수 없습니다

IV. 작동

1. 검토 현재 세션 및 글로벌 격리 수준

@@ global.tx_isolation을 선택 @@ tx_isolation을;

2. 현재의 글로벌 또는 세션 격리 수준

SET [GLOBAL | SESSION] 트랜잭션 격리 수준

{

REPEATABLE READ

| READ COMMITTED

| READ UNCOMMITTED

| SERIALIZABLE

}

 

 

게시 42 개 원래 기사 · 원 찬양 25 ·은 70000 +를 볼

추천

출처blog.csdn.net/qq812858143/article/details/103285503