본문 바로가기

데이터베이스

Transction(트랜잭션)

  트랜잭션

▶ 트랜잭션의 정의

하나의 작업을 수행하기 위해 필요한 데이터베이스 연산들을 모아 놓은 것. 작업 수행에 필요한 SQL 문들의 모임이다.

 - 논리적 작업의 단위.

장애 발생 시 복구 작업이나 병행 제어 작업을 위한 중요한 단위로 사용된다.데이터베이스의 무결성과 일관성을 보장하기 위해 작업 수행에 필요한 연산들을 하나의 트랜잭션으로 제대로 정의하고 관리해야 한다.

 

 예를들어, 회원가입 할 때, JDBC를 사용하여

1.중복체크 (select 검색)

2.가입버튼 (insert 추가)

회원가입 할 때 2개의 쿼리를 실행한다고 가정하는데

이 2개의 쿼리를 모아둔 것이 -> 트랜잭션 이다.

 

또, 어떤 작업을 했을 때(회원가입 할 때) 에러 발생시

에러 전 상태의 테이블로 만들어 줘야 한다. 위의 쿼리의 모음을 단위라고 보면 된다.

 

▶ 트랜재견의 특성

A : Atomicity (원자성)

C : Consistency (일관성)

I : Isolation (격리성, 고립성) - 기사시험 문제로 의존성으로 나올때가 있음. 의존성 아니다.

D : Durabilit (지속성, 영속성)

 

 - 원자성

트랜잭션의 연산들이 모두 정상적으로 실행되거나 하나도 실행되지 않아야 한다.(All-or-nothing)

• All-or-nothing : 트랜잭션 수행 도중 장애가 발생하면 지금까지 실행한 연산을 모두 취소하고 수행 전 상태로 되돌려야 한다.

 - 일관성

트랜잭션이 성공적으로 수행된 후에도 데이터베이스가 일관성 있는 상태를 유지해야 한다.

 - 격리성

수행 중인 트랜잭션이 완료될 때까지 다른 트랜잭션들이 중간 연산 결과에 접근할 수 없다.

여러 트랜잭션이 동시에 수행되더라도 마치 순서대로 하나씩 수행되는 것처럼 정확하고 일관된 결과를 얻을 수 있도록 제어하는 기능 필요

 - 지속성

트랜잭션이 성공적으로 완료된 후 데이터베이스에 반영한 수행 결과는 영구적이어야 한다.

지속성의 보장을 위해서는 장애 발생 시 회복 기능이 필요하다.

 

▶ 트랜잭션의 상태

• 활동상태 :  트랜잭션이 수행을 시작하여 현재 수행 중인 상태

• 부분완료상태 : 트랜잭션의 마지막 연산이 실행을 끝낸 직후의 상태

• 완료상태

    - 트랜잭션이 성공적으로 완료되어 commi연산을 실행한 상태

    - 트랜잭션이 수행한 최종 결과를 데이터베이스에 반영하고
      데이터베이스가 새로운 일관된 상태가 되면서 트랜잭션이 종료됨.

• 실패 상태:  장애가 발생하여 트랜잭션의 수행이 중단된 상태

• 철회상태

    - 트랜잭션의 수행 실패로 rollback 연산을 실행한 상태

    - 지금까지 실행한 트랜잭션의 연산을 모둔 취소하고 트랜잭션이
      수행되기 전의 데이터베이스 상태로 되돌리면서 트랜잭션이 종료됨.

    - 철회 상태로 종료된 트랜잭션은 상황에 따라 다시 수행되거나 폐기됨.

 

 

'데이터베이스' 카테고리의 다른 글

Stored trigger (트리거)  (0) 2020.04.20
Stored Function (함수)  (0) 2020.04.13
Stored Procedure (프로시저)  (0) 2020.04.13
Stored Program  (0) 2020.04.13
View(뷰)  (0) 2020.04.06