반응형
Notice
Recent Posts
Recent Comments
Link
코딩일상
[DataBase] 정규화 트랜잭션(ACID) 본문
반응형
트랜젝션??
여러작업들을 하나로 묶은 단위입니다. 한 덩어리의 작업들은 모두 실행되거나, 실행되지 않습니다. (all-or-nothing)
트랜잭션은 수행중에 한 작업이라도 실패하면 전부 실패하고, 모두 성공해야 성공이라고 할 수 있습니다.
트랜젝션이 필요한 이유??
예를 들면, A 은행 → B은행으로 돈을 보내기 위하여 출금하고 송금한다고 가정합니다.
A은행에서 돈을 출금하고나서 B은행으로 송금하려고 하는데 갑자기 시스템이 멈추면 어떻게 될까요?
돈은 출금되었지만, 송금되지 않고 증발하게 되는 끔찍한 상황이 발생합니다.
트랜젝션은 이런 상황이 일어나지 않도록 보장해줍니다.
트랜젝션 commit & rollback
- commit
- commit 연산은 하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성있는 상태에 있을 때 하나의 트랜잭션이 끝났음을 알려주기 위해 사용하는 연산이다.
- Rollback
- Rollback 연산은 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성을 깨뜨렸을 때, 이 트랜잭션의 일부가 정상적으로 처리되었더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소(Undo)하는 연산이다.
ACID??
ACID는 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질입니다.
- Atomicity(원자성)
- 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장하는 것을 말합니다.
- 즉, All or Noting의 개념으로서 작업 단위를 일부분만 실행하지 않는다는 것을 의미합니다.
- Consistency(일관성)
- 트랜잭션이 성공적으로 완료되면 일관적인 DB상태를 유지하는 것을 말합니다.
- 여기서 말하는 일관성이란, 위의 송금 예제에서 금액의 데이터 타입이 정수형(integer)인데, 갑자기 문자열(string)이 되지 않는 것을 말합니다.
- Isolation(격라성)
- 트랜잭션 수행시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장하는 것을 말합니다.
- 즉, 트랜잭션끼리는 서로를 간섭할 수 없습니다.
- Durability(내구성)
- 성공적으로 수행된 트랜잭션은 영원히 반영이 되는 것을 말합니다.
- commit을 하면 현재 상태는 영원히 보장됩니다.
[DB이론] 트랜잭션(transaction)과 ACID 특성을 보장하는 방법
1. 트랜잭션( transaction )트랜잭션이란 질의(query)를 하나의 묶음 처리해서 만약 중간에 실행이 중단됐을 경우,처음부터 다시 실행하는 Rollback을 수행하고, 오류없이 실행을 마치면 commit을 하는 실
victorydntmd.tistory.com
[DB] Transaction 과 ACID란?
DB의 기초개념인 트랜젝션과 ACID에 대해서 알아봅니다.
chrisjune-13837.medium.com
반응형
Comments