반응형
※ isolation level (Transaction 격리 수준)
- 동시에 여러 트랜잭션이 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할지 말지를 결정 하는 레벨
- 격리 수준 : Read Uncommitted, Read Committed, Repeatable Read, Serializable
- 격리 수준이 높아질수록 동시성도 떨어지는 것이 일반적
- Read Uncommitted (Dirty Read)
- Read Committed
※ Repeatable Read : 하나의 트랜잭션 내에서 동일 select 쿼리를 실행했을 때는 항상 같은 결과를 가져와야 한다는 정합성 정의 (select를 한 후 재차 하는 사이에 데이터 변경이 있어서 동일 select 했을 때 다른 결과가 나오는 것을 뜻함)
이것이 문제될 수 있는 상황은 하나의 트랜잭션에서 동일 데이터를 여러 번 읽고 변경하는 작업이 금전적인 처리와 연결된다면 문제가 발생할 수 있음.(ex-돈을 인출하는 과정에서 돈이 있어서 인출하려는 사이에 금액에 변경이 생겼(다른 곳에서 돈이 인출됨)는데 인출이 가능한 경우 문제가 발생)
3. Repeatable Read
※ MVCC(Multi Version Concurrency Control)
: 잠금을 사용하지 않는 일관된 읽기를 제공하는 것이 목적
이해를 하기 위해 다시 정리
- Read Uncommitted : 변경되었거나 안된 데이터의 값을 읽음
- Read Committed(그 이상의 경리 수준 - Repeatable_Read, Serializable) : 변경 전 Undo에 있는 값을 읽음
-> 이러한 과정을 MVCC라고 표현
4. Serializable
5. Repeatable Read 격리 수준과 Read Committed 격리 수준의 성능 비교
MySQL(Repeatable Read) 과 Oracle(Read Committed) 은 격리수준이 다르다.
반응형
'데이터베이스(DB) > MariaDB' 카테고리의 다른 글
[MYSQL] 일반적인 오류를 해결하는 유용한 정보 (0) | 2022.04.20 |
---|---|
MariaDB - 암호화, 복호화 (0) | 2021.09.01 |
MariaDB- sql 쿼리문 (일간/주간/월간/연간) 게시글 출력 (0) | 2021.08.25 |
MariaDB_SQL 기본 예제, SQL 따라하기 (0) | 2021.06.15 |