코드스테이츠 AI 부트캠프/Section 3

AIB_313_복습정리 : 트랜잭션

yourhm 2021. 12. 27. 09:09

트랜잭션(transaction)

• '데이터베이스의 상태를 변화시키는 작업의 모음' 이라고 표현한다.

• 주로 데이터베이스의 상태를 변화시키는 INSERT, DELETE, UPDATE 중 한 개 이상의 DML과 같이 사용된다.

 

 

 

ACID

• Atomicity, Consistency, Isolation, Durability

• 각 단어는 데이터베이스내에서 일어나는 하나의 트랜잭션의 안전성을 보장하기 위해 필요한 성질을 의미한다.

 

1) 원자성 (Atomicity)

 하나의 트랜잭션을 구성하는 작업들 중 하나가 실패하면 전부 실패해야한다. 부분적으로 성공하여 실행이 되면 안되는 성질이다.

 SQL로 특정 쿼리를 실행했는데 부분적으로 실패하는 부분이 있다면 전부 실패하게 된다.

 

2) 일관성 (Consistency)

• 하나의 트랜잭션 이전과 이후 데이터베이스 상태는 이전과 같이 유효해야 한다.

 예를 들어 user 라는 테이블에는 id 와 name 이 있어야하는 데이터베이스 제약이 있다고 하자. 이때 id 가 없는 새로운 고객을 추가하는 쿼리나 기존 user의 name만을 삭제하는 쿼리는 일관성에 위배된다.

 

3) 고립성 (Isolation)

• 하나의 트랜잭션이 다른 트랜잭션과 독립되어야 한다.

실제로 동시에 여러 개의 트랜잭션들이 수행될 때에 각 트랜젝션은 고립되어 있어 연속으로 실행된 것과 동일한 결과를 나타내야 한다.

 

4) 지속성 (Durability)

 하나의 트랜잭션이 성공적으로 수행되었을 시, 해당 트랜잭션에 대한 로그가 남고 런타임 오류, 시스템 오류가 발생해도 해당 기록은 영구적이어야 한다.