DB #4 :: 트랜잭션과 ACID

해다·2022년 4월 23일
0

etc.

목록 보기
14/21
post-thumbnail
post-custom-banner

🙊 잘못 적은 내용이 있다면 댓글 달아주세요!


💻 데이터베이스 트랜잭션

우와 정처기 공부할 때 틈 날때마다 보이던 개념이라 반갑다ㅋㅋㅋ 트랜잭션은 거래(deal)나 과정, 절차(process) 같은 뜻으로 쓰이는 단어인데 왜 이게 데이터베이스에서는 한 작업단위를 나타내는 말이 됐을까? 여기에 대해서는 짐작가는 바가 전혀 없어서 사족을 못 붙이겠다! 여튼 데이터베이스에서 트랜잭션은 한꺼번에 수행되어야 할 최소 작업 단위를 말한다.
이때 모든 작업은 반드시 한꺼번에 완료가 되야 하며 그렇지 않은 경우에는 한꺼번에 취소되어야 한다.
(아래에서 말하겠지만 트랜잭션의 대표적인 특성 중 하나로 원자성(Atomicity)이라고 불린다.)
또한 트랜잭션은 사용자가 시스템에 요구를 시작한 이후의 시스템 내에서의 처리와 시스템에서 사용자에게 응답하는 모든 처리를 포함한다. 이 말은 무슨 내용인지 잘 모르겠다...

💻 ACID

트랜잭션 이야기가 나오면 꼭 같이 딸려나오는 트랜잭션의 특성, ACID이다. ACID는 트랜잭션의 특성들을 뜻하는 영어 단어들의 앞글자를 따서 나온 단어이다. 처음부터 살펴보면...

📌 원자성 (Atomicity)

트랜잭션은 분리할 수 없는 하나의 작업단위로, 이때 작업은 모두 완료가 되거나 모두 취소가 되어야 한다는 말이다. 트랜잭션 처리가 취소된 경우에는? 전혀 작업이 이루어지지 않은 것과 같아야 한다는 말이다. 모 아니면 도 같은 말인데 데이터베이스의 TCL(트랜잭션 제어어,Transaction Control Language) 중에서 commitrollback 이 원자성을 드러내는 행위에 해당한다. 원자성이 지켜지지 않을 경우 데이터가 오염되어 Dirty Read 현상이 발생할 수 있다.

📌 일관성(Consistency)

트랜잭션은 언제나 일관성 있는 결과를 가져와야 하며 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료의 상태가 같아야 한다는 말이다. 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다. 똑같은 데이터베이스에 대해서 똑같은 쿼리문으로 조회를 하는데 결과가 다르면 안된다는 말인 것? 같다?

📌 독립성(Isolation)

독립성, 또는 고립성, 또는 격리성이라고 불린다. 이 특성은 둘 이상의 트랜잭션이 동시에 병행 실행 되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다는 얘기다. 따라서 현재 수행중인 트랜잭션이 완전히 완료될 때까지 다른 트랜잭션은 이 트랜잭션의 수행 결과를 참조할 수 없다.트랜잭션이 완료되기 전까지 다른 트랜잭션에 영향을 주어선 안되며 접근하고 있는 데이터는 다른 트랜잭션으로부터 격리되어야 한다.

📌 영속성(Durability)

영구성, 영속성, 또는 지속성이라고 불린다. 트랜잭션이 완료되었다면 시스템 고장이나 네트워크 장애 등으로 데이터가 유실되지 않고 정상적으로 기록이 되어야 한다는 말이다. 성공적으로 완료된 트랜잭션의 결과는 영구반영되어야 하고 한번 성공을 했다면 장애가 발생해도 데이터가 살아있어야 한다.

🙊 별거 아닌 얘기

혹시 정처기 실기 준비를 한다면 다 외워야하는 필수 개념이고, 트랜잭션의 특성인 ACID는 그 특성의 영어단어까지 외우는 것을 추천한다. 최근에 이 개념에 해당하는 영어 단어를 쓰라는 문제가 많이 나와서 영어 시험인지 기사 시험인지 모르겠다는 평도 듣는 것 같지만... 그래도 어찌됐던 여러가지 이유로 외우는 편이 공부하는 자신에게 더 도움이 될 것 같다. ㅎㅎ

profile
잘하는 건 아닌데 포기하진 않을거야
post-custom-banner

0개의 댓글