얼음꽃의 일지

[DB] 트랜잭션의 ACID 본문

항해 일지

[DB] 트랜잭션의 ACID

얼음꽃 2022. 11. 29. 17:03
728x90

 

트랜잭션 : 여러 개의 작업을 하나로 묶어서 실행하는 것입니다. 

 

좀 더 자세히 말하자면 데이터베이스에서 트랙재션은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위입니다. 단일 트랜잭션은 DB 내에 읽거나 쓰는 여러 개 쿼리를 요구합니다. 이때, 중요한 것은 데이터베이스가 수행된 일부 쿼리가 남지 않는 것입니다. 

 

예를 들면, 송금을 할 때 한 계좌에서 인출되면 다른 계좌에서 입금이 확인되는 것이 중요합니다. 즉, 자신의 계좌에서 돈이 차감되고 나서 돈을 받은 계좌에서 입금이 되어야하는데 차감만 될뿐 입금이 안되면 돈이 증발 하기때문에 이런일이 발생하면 처음부터 다시 하도록 rollback 해주는 것입니다. 만약 문제가 없으면 그때는 commit을 해주는 것이구요. 이게 트랙잭션의 한 과정이라고 보시면 됩니다.

 

트랜잭션의 실행은 다음과 비슷합니다.

 

1. 트랜잭션의 시작

2. 여러개의 쿼리를 실행 ( 이때, DB갱신 안함, 쿼리가 하나라도 실패하면 무조건 롤백 처리 )

3. 문제가 없으면 그때 commit 작용 ( 이때, DB 갱신 )

 

기본적으로 DB는 ACID라는 특성을 가지고 있습니다. 이 특성은 데이터베이스 내에서 일어나는 하나의 트랙잭션의 안정을 보장하기 위해서 필요한 부분입니다.

 

* 원자성(Atomicity)

-> 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장 즉, 작업 단위를 나누는게 아닌 한번에 실행

-> 부분적으로 작동을 못하게되면 이제 실행하다 실패시 처음부터 다시 rollback되어 실행하게 되는데 이러면 시간이 오래걸리기 때문에 save point를 만들어서 그 시간을 단축시켜 줍니다.

 

* 일관성(Consistency)

-> 트랜잭션이 성공하면 일관적인 DB상태 유지

-> 이 일관성은 데이터 타입이 변하거나, 갑자기 값이 변하는 부분이 없어야 한다는 것을 의미

 

* 격리성(Isolation)

-> 하나의 트랜잭션이 실행되고 있는데 다른 트랜잭션이 작업에 끼어들지 못하게 함을 의미, 즉 서로 간섭이 불가

 

*지속성(Durability)

-> 성공적으로 commit이 되었을때, 그 트랜잭션은 영원히 반영, 즉, commit된 상태는 영원히 보장

728x90

'항해 일지' 카테고리의 다른 글

PM2  (0) 2022.12.05
계층형 아키텍처 패턴  (0) 2022.12.01
RDMS 와 NoSQL은 무엇인가?  (0) 2022.11.28
Nginx + https연결 사용법  (0) 2022.11.02
게시글, 댓글, 좋아요 형태 만들기  (0) 2022.10.11