Coding Planet

[SQLD] 데이터베이스에서 트랜잭션의 격리성(Isolation)이 낮은 경우 발생하는 문제점들 본문

DB, SQL

[SQLD] 데이터베이스에서 트랜잭션의 격리성(Isolation)이 낮은 경우 발생하는 문제점들

jhj.sharon 2023. 8. 31. 20:47
반응형

데이터베이스에서 트랜잭션의 격리성(Isolation)이 낮은 경우, 여러 트랜잭션들이 동시에 실행될 때 서로 간섭할 수 있다. 이로 인해 발생할 수 있는 문제점들은 다음과 같다.

** 격리성(고립성, Isolation) : 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들면 안된다는 트랜잭션의 원칙

 

| Dirty Read (더티 리드)

  • 한 트랜잭션에서 아직 커밋되지 않은 변경을 다른 트랜잭션이 읽을 수 있다. 이로 인해 잘못된 데이터나 일관성이 없는 데이터를 읽게 될 수 있다.

| Non-repeatable Read (비반복 읽기)

  • 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 그 사이에 다른 트랜잭션이 값을 수정 또는 삭제하는 바람에 두 쿼리 결과가 다르게 나타나는 현상을 의미한다.

| Phantom Read (팬텀 리드)

  • 한 트랜잭션에서 같은 쿼리를 두번 수행했는데, 첫번째 쿼리에서 없던 유령 레코드가 두번째 쿼리에서 나타나는 현상을 말한다.

| Lost Update (잃어버린 업데이트)

  • 두 트랜잭션이 동일한 데이터를 동시에 업데이트할 때, 한 트랜잭션의 업데이트가 다른 트랜잭션의 업데이트로 덮어쓰여질 수 있다.

 

이러한 문제점들로 인해 데이터베이스의 일관성 및 무결성이 손상될 수 있다. 따라서 트랜잭션의 격리성 수준을 적절히 설정하여 위와 같은 문제점들을 방지해야 한다. 데이터베이스 시스템마다 격리성 수준을 설정하는 방법이 다르며, 일반적으로는 SERIALIZABLE, REPEATABLE READ, READ COMMITTED, READ UNCOMMITTED 등의 격리성 수준을 제공한다.

반응형
Comments