[기술]Transaction

sihwan_e·2020년 7월 3일
4

기술면접

목록 보기
6/7

정의

"하나의 처리를 여러 단계로 다루는 기능"

데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위를 뜻한다.
SQL의 질의어 (SELECT, INSERT, DELETE, UPDATE)를 이용해서 데이터베이스를 접근하는것을 의미한다.
작업의 단위는 질의어 한문장이 아니며, 작업단위는 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미한다.

예를들면 댓글을 작성하고, 댓글을 올리고, 다시 확인하면 업데이트 된걸 볼수 있는데, 이것을 데이터베이스 작업으로 치면, 사용자가 댓글을 올리기를 눌렀을때 INSERT문을 이용해서 입력한 댓글의 데이터를 옮기고, 댓글들을 구성할 데이터를 SELECT해서 최신으로 항상 유지한다.
이떄 작업의 단위는 INSERT, SELECT문 둘다를 합친것이고, 이러한 작업단위를 하나의 트랜잭션이라고 한다.

특징

1.트랜잭션은 데이터베이스 시스템의 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다.
2.사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다.
3.하나의 트랜잭션은 Commit되거나 Rollback된다.

성질 ACID

Atomicity, Consistency, Isolation, Durablility

데이터베이스 트랜젝션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어.

1.원자성(Atomicity)
트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영이 안되야한다.
트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야하며, 모두 완벽히 수행 되지 않고 어느하나라도 오류가 발생하면 트랜잭셔 전부가 취소되어야 한다.

트랜잭션 단위로 데이터가 처리되지 않는다면, 설계한 사람은 데이터처리 시스템을 이해하기힘들며, 오작동 시에 원인을 찾기가 매우 힘들어 질것이다.

2.일관성(Consistency)

트랜잭션의 작업처리결과가 항상 일관성이 있어야한다.
트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이스 상태로 변환한다.
시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야한다.
트랜잭션이 진행되는 동안 데이터베이스가 변경되더라도 처음에 참조한 데이터베이스로 진행된다.

3.독립성,격리성(Isolation)
둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어 들수 없다.
수행중인 트랜잭션은 완전히 완료될 떄까지 다른 트랜잭션에서 수행 결과를 참조할 수없다.

4.영속성,지속성(Durablility)
성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야한다.

연산 및 상태

1.Commit연산
하나의 트랜잭션이 성공적으로 끝나면 데이터 베이스가 일관성있는 상태에 있을때, 하나의 트랜잭션이 끝났다라는 것을 알려주기 위해 사용하는 연산이다. 이 연산을 사용하면 수행했던 트랜잭션은 로그에 저장이 된다.
2.Rollback연산
롤백 연산은 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터 베이스의 일관성(원자성)을 깨뜨렸을때 이트랜잭션의 일부가 정상적으로 처리되었더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소 하는 연산이다.
롤백 시에는 해당 트랜잭션을 재시작하거나 폐기한다.

profile
Sometimes you gotta run before you can walk.

0개의 댓글