🌿 중급 DB
데이터베이스 격리 수준이란?
쉽게 이해하기
도서관에서 여러 사람이 같은 책을 빌리려고 할 때 규칙을 정하는 것과 비슷해요. '한 번에 한 명만'(엄격), '읽기만 하면 여러 명 동시 가능'(중간), '아무 때나 가능'(느슨) 같은 규칙을 정하는 거죠. 데이터베이스도 여러 작업이 동시에 일어날 때 얼마나 엄격하게 관리할지 수준을 정할 수 있어요.
핵심 정리
동시에 여러 트랜잭션이 실행될 때 서로 어느 정도 간섭할지 정하는 기준이에요.
자세히 알아보기
격리 수준(Isolation Level)은 데이터베이스에서 여러 트랜잭션이 동시에 실행될 때, 각 트랜잭션이 서로의 작업을 얼마나 볼 수 있는지를 정하는 설정이에요. ACID 원칙 중 'I'에 해당하는 개념이죠.
격리 수준은 보통 4단계로 나뉘어요. Read Uncommitted(가장 느슨), Read Committed(기본), Repeatable Read, Serializable(가장 엄격) 순이에요. 수준이 높을수록 데이터 정합성은 보장되지만 성능은 떨어지고, 수준이 낮을수록 빠르지만 데이터 불일치 문제가 생길 수 있어요.
실무에서 가장 많이 쓰는 건 Read Committed 수준이에요. 커밋되지 않은 데이터는 다른 트랜잭션에서 볼 수 없게 해서, 중간에 롤백된 데이터를 읽는 문제를 방지해요. 예를 들어 A가 계좌이체 중인데 B가 그 중간 상태를 보면 안 되니까요.
격리 수준이 낮으면 Dirty Read(커밋 안 된 데이터 읽기), Non-repeatable Read(같은 쿼리인데 결과가 달라짐), Phantom Read(없던 데이터가 갑자기 나타남) 같은 문제가 생길 수 있어요. 반대로 너무 높으면 동시성이 떨어져서 성능이 느려지죠. 그래서 서비스 특성에 맞게 적절한 수준을 선택하는 게 중요해요. 금융 서비스처럼 정확성이 중요하면 높은 수준을, SNS처럼 속도가 중요하면 낮은 수준을 선택할 수 있어요.