mariadb Data List

/ 목차 /
- MariaDB 격리 수준
MariaDB 격리 수준
- MySQL에서 격리 수준(Isolation Level)은 여러 동시성 제어 방식 중 하나입니다. 격리 수준은 데이터베이스 트랜잭션의 일관성, 격리성, 지속성, 동시성을 제어하는 기능입니다. MySQL은 다음과 같은 네 가지 격리 수준을 지원합니다:
READ UNCOMMITTED | 가장 낮은 격리 수준으로, 다른 트랜잭션에서 커밋되지 않은 변경 내용을 읽을 수 있습니다. 이 격리 수준은 데이터 무결성과 일관성을 보장하지 않으므로 권장되지 않습니다. |
READ COMMITTED | 커밋된 변경 내용만 읽을 수 있으며, 한 트랜잭션 내에서 같은 레코드를 여러 번 읽을 경우, 각각 다른 결과를 반환할 수 있습니다. 이 격리 수준은 일관성은 보장하지만 반복 가능한 읽기는 보장하지 않습니다. |
READ COMMITTED | 한 트랜잭션 내에서 같은 레코드를 여러 번 읽으면 항상 동일한 결과를 반환합니다. 다른 트랜잭션에서 이 레코드에 대한 변경을 시도할 경우, 변경이 완료될 때까지 레코드에 대한 읽기는 차단됩니다. 이 격리 수준은 반복 가능한 읽기와 일관성을 보장하지만, 팬텀 리드(Phantom Read)라는 현상이 발생할 수 있습니다. |
REPEATABLE READ | 한 트랜잭션 내에서 같은 레코드를 여러 번 읽으면 항상 동일한 결과를 반환합니다. 다른 트랜잭션에서 이 레코드에 대한 변경을 시도할 경우, 변경이 완료될 때까지 레코드에 대한 읽기는 차단됩니다. 이 격리 수준은 반복 가능한 읽기와 일관성을 보장하지만, 팬텀 리드(Phantom Read)라는 현상이 발생할 수 있습니다. |
SERIALIZABLE | 가장 높은 격리 수준으로, 팬텀 리드를 방지하기 위해 읽기와 쓰기 모두에 대해 레코드 단위의 잠금을 사용합니다. 이 격리 수준은 격리성을 우선시하며, 동시성을 포기합니다. 따라서 동시성이 떨어지고 성능이 저하될 수 있으므로, 필요한 경우에만 사용하는 것이 좋습니다. |
SQL
SET TRANSACTION ISOLATION LEVEL [isolation_level];
위의 [isolation_level]에는 "READ UNCOMMITTED", "READ COMMITTED", "REPEATABLE READ", "SERIALIZABLE" 중 하나를 사용할 수 있습니다
Comment