트랜잭션
▶ 트랜잭션의 정의
하나의 작업을 수행하기 위해 필요한 데이터베이스 연산들을 모아 놓은 것. 작업 수행에 필요한 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 |