데이터베이스 트랜잭션 ACID

이영광·2021년 8월 23일
0

데이터베이스

목록 보기
2/8

데이터베이스의 트랜잭션 원리

트랜잭션?

트랜잭션이란 여러개의 작업을 하나로 묶는 실행 유닛
각 트랜잭션은 하나의 특정 작업으로 시작해 묶여 있는 모든 작업들을 완료해야 종료
트랜잭션에 속해있는 작업중 하나라도 실패하면, 모든 트랜잭션작업은 실패
트랜잭션은 실패를 하지않으려면 모든 작업을 성공해야함

예를 들어 은행에서 입금이 되거나 출금이 될대 db를 이용하게 되는데 입금이나 출금이 액션이라고 할때 이 액션이 일어나는것을 트랜잭션입니다.

ACID (데이터베이서 내에서 일어나는 하나의 트랜잭션의 안정성을 보장하기 위한 성질)

1.Atomicity(원자성)(가장중요한성질)

.트랜잭션의 연산은 데이터베이스에 모두반영되든지 아니던지..
.트랜잭션내의 모든명령은 완벽히 모두 수행되어야하고, 하나라도 실패하면 실패다

은행에서 입금을 할때 성공을 하던지 실패를하던지 갑자기 멈추는일없어야하며
무언가 문제가 생길시 무조건 실패가떠야 돈이 안전할것이다 입금이 되면 되는거고 안되면 안되는거고
^^

2.Consistency(일관성)

.트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이스 상태로 변환
.시스템이 가지고있는 고정요소는 트랜잭션 수행완료와 수행전이 상태가 같아야함

내가 계좌번호가 바뀌거나 이름이 바뀌거나 하면안된다--고정되는부분
100만원있는 계좌에 50만원이 입금한다면 정확하게 50이 올라가야한다

3.Isolation(독립성,고립성,격리성)

.둘이상의 트랜잭션이 동시 병행실행되는경우 하나의 트랜잭션 실행중에 다른트랜잭션 끼어들수없음
.수행중인 트랜잭션은 완료될때까지 다른 트랜잭션에서 수행결과 참조 불가

엄마한테 입금좀해주라했는데 내가 급해서 동시에 뺸다? 는 존재할수없다
입금하고 나서 출금을해야된다 함나디로 수행중에 침범할수없다는 이야기

4.Durability(지속성,계속성)
.트랜잭션에 의해서 변화된 상태는 계속해서 유지될수 있어야한다.
.트랜잭션이 성공적인 완료를 응답했다면 트랜잭션 완료의 효과는 지속되어야한다.

100만원에 있는 계좌에 50을 입금시켰으면 150이 유지되어야한다 근데 아무 트랜잭션 실행이없이 금액이 변화하면 절대안되며 유지되어야한다

트랜잭션의 상태

1 : 활동(activ) : 트랜잭션이 실행중인 상태

atm 기를 실행하기 시작

2 : 부분완료(Partially Committed): 트랜잭션이 마지막 연산을끝내고 데이터베이스에 실행결과를 적용하기 직전의 상태를 의미

계좌번호넣고 패스워드 입력하고 의 상태

3 : 완료 (Committed): 트랜잭션이 연산을 완료하고 연산의 결과를 데이터베이스에 적용한 상태를 의미

내가 입금한 금액이 db에 입력이된상태

4 : 트랜잭션이 실행중 어떤 오류에 의해 더 이상 진행할수없는 상태

5 : 철회 (Aborted): 트랜잭션이 실행을 실패하여 복귀되어 있는 상태를 의미한다.

트랜잭션의 연산

1.commit(완료): 트랜잭션 실행이 성공적으로 종료되었음을 알리는 연산자, 데이터 아이템의 값들은 영속성이 보장되며, 데이터베이스의 상태가 일관성 있는 상태로 변화된 상태를 의미한다

2.RollBack(복귀): 트랜잭션 실행이 실패하였음을 알리는 연산자로 트랜잭션이 수행한 결과를 원래의 상태로 복귀시켜야 되는 상태

```
롤 해본사람들은 알겠지만 물론 잘못패치가 되거나 무언가 다시 되돌려야할때 패치 롤백이나, 자크궁의 롤백, 르블랑 스킬 롤백 등이 있을수있겟다
```
profile
《REACT》《JAVASCRIPT 》 만지고있어욤

0개의 댓글