본문 바로가기

프로그래밍&IT/SQL Server (MS-SQL)

트랜젝션.Transaction - 원자성, 일관성, 격리성, 영속성 (ACID)

트랜잭션 (Transaction , 작업단위)

여기에선 데이터를 쿼리하고 변경하는 다양한 작업뿐만 아니라 데이터 정의를 변경하는 작업도 포함된다.

경계는 명시적 / 암시적으로 지정할 수 있다.

 

- 명시적

직접 BEGIN문과 COMMIT [실패시 ROLLBACK] TRAN을 사용한다.

 

BEGIN TRAN/TRANSACTION 구문을 사용하며,

마지막 부분에는 COMMIT TRAN / TRANSACTION이나 ROLLBACK TRAN / TRANSACTION을 지정한다.

 

- 암시적

기본적으로 개별 구문마다 트랜젝션으로 묶어서 처리하게된다.

    - 암시적 트랜젝션 구문

    IMPLICIT_TRANSACTIONS = on / off [ON 이면 암시적 트랜젝션]

트랜젝션의 끝에는 COMMIT이나 ROLLBACK을 지정해야 한다.

 

* 트랜젝션의 4가지 특성.

트랜젝션은 4개의 특성을 가지고 있는데, 각각의 첫 글자를 따서 ACID라 한다.

Atomitity (원자성)

트랜젝션은 분리할 수 없는 하나의 단위로서, 작업은 모든 구문이 처리되거나 모두 처리되지 않는다.

원자성의 보증은  데이터베이스의 부분적인 갱신으로 더 큰 문제가 발생하는 것을 방지한다.

Atom의 어원은 '기초적이고 나눌 수 없는 요소'란 의미의 고대 그리스어에서 기원한다.

 

Consistency (일관성, 정합성)

트랜젝션 처리 전과 처리 된 후에 데이터 모순이 없는 상태를 유지하는 것을 의미.

RDBMS가 동시 트랜젝션 형태로 데이터를 변경하고 조회할 수 있도록 제공하는 데이터의 상태를 말한다.

  • DB가 제약조건 (기본키, 고유제약조건, 참조키 등)을 통해 정의되는 무결성의 규칙을 따라야함을 의미하는 용어이기도 하다.
  • 트랜젝션은 데이터베이스를 하나의 일관된 상태에서 다른 상태로 바꾸는 역할을 한다.
  • 잠금과 관련이 깊다.

Isolation (격리성, 독립성)

트랜젝션 수행할 때, 다른 트랜젝션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미.

즉, 트랜젝션 밖에 있는 어떤 처리, 연산도 중간 단계의 데이터를 볼 수 없음을 의미한다.

데이터에 접근을 관리하는데 사용되며, 트랜젝션에서 정의하고 있는 일관성 수준을 만족하는 데이터에만 접근하는 것을 보장하는 매커니즘을 말한다.

  1. '잠금' 관련된 전통적은 방식
  2. 행 버전  관리를 사용하는 방식

으로 격리수준을 관리한다.

 

Durability (영속성)

성공적으로 수행된 트랜젝션은 영원히 반영되어야 함을 의미한다.

데이터의 변경사항은 항상 디스크에 있는 데이터베이스의 데이터 파일에 저장되기전에 트랜젝션 로그파일에 기록된다.