주말이 지나고나니 갑자기 날씨가 20도가 넘으며 여름 같아졌네요. 이제 옷장 정리할 필요가 느껴지네요.
저번 시간에는 관계형 데이터베이스와 비관계형 데이터베이스에 대해서 학습해봤습니다. 이번에는 더 깊은 데이터베이스 지식에 대해서 학습해보도록 하겠습니다. 아마도 5편에 나눠져서 작성될 것으로 예상되며 예제와 함께 가져올 것 같습니다. 그럼 공부 시작합니다.
트랜잭션
데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 최소 단위
여기서 상태 변화란 데이터베이스에 저장된 데이터의 현재 값이나 구조가 변경되는 것을 의미하며, 대표적으로 데이터의 삽입(INSEERT), 수정(UPDATE), 삭제(DELETE)가 해당됩니다.
트랜잭션이 필요한 이유
1. 작업을 하나의 논리적 단위로 묶기 위해
예시) 계좌 이체할 경우 출금과 입금이 함께 성공해야 한다.
2. 장애 발생 시 데이터를 안전하게 복구하기 위해
중간에 실패하면 일부만 반영되는 것이 아닌 원래 상태로 되돌려야 한다.
3. 동시에 여러 사용자가 접근할 때 데이터 충돌을 줄이기 위해
예시) 같은 좌석을 동시에 예약하는 상황
트랜잭션의 특징 - ACID
- 원자성(Atomicity)
- 트랜잭션 내의 작업은 모두 성공하거나, 모두 실패해야한다.
- 모두 성공할 경우 커밋 되거나 하나라도 실패할 경우 롤백 되어야한다.
- 일관성(Consistency)
- 트랜잭션 완료 후 데이터베이스는 일관된 상태를 유지해야한다.
- 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다.
- 고립성(Isolation)
- 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들 수 없다.
- 동시에 같은 데이터를 수정하지 못하도록 해야한다.
- 지속성(Durability)
- 성공적으로 수행된 트랜잭션은 영구적으로 반영되어야한다.
- 중간에 시스템에 문제가 발생하더라도 데이터베이스 로그 등을 사용해서 성공한 트랜잭션 내용을 복구할 수 있어야 한다.
트랜잭션의 연산
1. COMMIT 연산
트랜잭션이 성공적으로 수행되었음을 선언하는 연산으로 COMMIT 연산의 실행을 통해 트랜잭션의 수행이 성공적으로 완료되었음을 선언하고, 그 결과를 최종 DB에 반영한다.
2. ROLLBACK 연산
트랜잭션이 실패했음을 선언하고 작업을 취소하는 연산으로 트랜잭션이 수행되는 도중 일부 연산이 처리되지 못한 상황이라면 ROLLBACK 연산을 실행하여 트랜잭션 수행이 실패했음을 선언하고, DB를 트랜잭션 수행 전과 일관된 상태로 되돌려야한다.
트랜잭션이 실무에서 중요한 이유
실무에서 트랜잭션은 데이터의 일관성을 지키고, 오류 발생 시 복구를 가능하게 함, 동시에 여러 요청이 발생하는 환경에서도 안정적인 서비스 흐름을 보장하기 때문에 중요합니다.
오늘은 트랜잭션과 ACID에 대하여 간략하게 알아보았습니다. 트랜잭션에 대해서는 자세히 알아보면 병행제어, 격리 수준 등 함께 알아두어야할 이론적인 내용이 더 존재하지만, 해당 부분은 이후에 차차 정리해보도록 하겠습니다. 다음 글에는 ORM에 대해 학습해보도록 하겠습니다. 수고하셨습니다.
'백엔드 공부' 카테고리의 다른 글
| 더 깊은 데이터베이스 지식 (3) - N+1 문제 (0) | 2026.04.16 |
|---|---|
| 더 깊은 데이터베이스 지식 (2) - ORM (0) | 2026.04.15 |
| 관계형 데이터베이스와 비관계형 데이터베이스 (0) | 2026.04.12 |
| 버전 관리 시스템과 저장소 호스팅 서비스 (0) | 2026.04.09 |
| OS에 대한 전반적인 지식 (5) - POSIX이란? (0) | 2026.04.07 |