"반복 가능한 읽기" vs Optimistic
동시성 통제와 거래 격리 수준의 차이는 무엇입니까?
저는 그것들을 각각 명확히 이해하고 있지만, 서로 연관시키는 데 문제가 좀 있습니다.구체적으로 기능이 겹치는 부분이 있는데 언제 하나를 사용해야 할지 잘 모르겠습니다.아니면 둘 다 같이 사용해야 합니까?
또한 반복 가능한 읽기로 비관적 잠금을 말하는 것은 무엇을 의미합니까?다시 읽을 수 있는 것은 편집할 모든 값이 잠겨 있다는 것을 의미하지 않습니까?그렇다면 비관적 잠금이 여전히 필요한 이유는 무엇일까요?
동시성 제어를 위한 두 가지 모델이 있기 때문에 문제가 발생합니다. 이 모델들은 SQL 구현에 의해 혼합되기도 합니다.
- 2PL(이상 잠금)에서와 같이 잠금
- MVCC(Multi version Concurrency Control)에서와 같은 버전
비관적이란 읽은 행이 잠겨 있음을 의미합니다.낙관적이란 읽은 행이 잠겨 있지 않음을 의미합니다.
Repeatable Read의 고전적인 2PL 구현은 항상 비관적입니다.Repeatable Read의 다중 버전 구현은 낙관적입니다.SELECT 문에 대해 읽은 행을 잠그지 않으며 다른 트랜잭션이 SELECT에서 읽은 행을 수정할 수 있습니다.이러한 변경 사항은 커밋될 때까지 SELECT를 수행한 트랜잭션에 표시되지 않습니다.
동시성 제어는 동시 연결에서 발생하는 문제를 처리하는 모든 메커니즘의 일반적인 용어입니다.
트랜잭션 격리 수준은 MySQL이 동시성 제어를 구현하는 메커니즘입니다.
MySQL 구현 방법에 대한 자세한 내용은 일관된 비잠금 읽기 참조REPEATABLE READ
비관적 잠금 없이:
일관된 읽기는 액세스하는 테이블에 잠금을 설정하지 않으므로 다른 세션은 테이블에서 일관된 읽기가 수행되는 동시에 해당 테이블을 자유롭게 수정할 수 있습니다.
기본값으로 실행 중이라고 가정합니다.
REPEATABLE READ
고립 수준일관된 읽기(즉, 보통 읽기)를 실행할 때SELECT
statement), InnoDB는 쿼리가 데이터베이스를 보는 시점에 따라 트랜잭션을 제공합니다.시점이 할당된 후 다른 트랜잭션이 행을 삭제하고 커밋하는 경우 해당 행은 삭제된 것으로 보이지 않습니다.삽입 및 업데이트는 유사하게 처리됩니다.
언급URL : https://stackoverflow.com/questions/13668531/repeatable-read-vs-optimistic
'it-source' 카테고리의 다른 글
Oracle의 조건부 SUM (0) | 2023.10.18 |
---|---|
html 폼의 값을 쿼리로 사용하여 터미널에서 검색 (0) | 2023.10.18 |
뷰: @click으로 다중 기능을 호출하려면 어떻게 해야 합니까? (0) | 2023.10.18 |
Oracle에서 Select Exists를 사용하는 방법? (0) | 2023.10.18 |
오류: 오류 1064:SQL 구문에 오류가 있습니다. MariaDB 서버에 해당하는 설명서를 확인하십시오. (0) | 2023.10.18 |