IT/Database

트랜잭션 Transaction

iamhyeon 2024. 10. 8. 20:50

< 트랜잭션(Transaction) >

- 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻한다
- 데이터베이스 상태를 변화시킨다  =>  SQL를 이용하여 데이터베이스를 접근 하는 것을 의미

 

- 데이터베이스 관리 시스템(DBMS)에서 하나의 논리적인 작업 단위를 의미

- 여러 개의 데이터베이스 작업(쿼리)을 하나의 작업으로 묶어서 처리하는 개념으로,

- 트랜잭션 안에 있는 모든 작업이 성공적으로 완료되면 데이터베이스에 반영되고,

- 그렇지 않으면 아무것도 반영되지 않도록 보장한다

- 트랜잭션은 일관성 있는 상태를 유지하면서 데이터베이스 작업을 처리하기 위한 중요한 메커니즘이다


< 트랜잭션의 특징 (ACID 특성) >


트랜잭션은 다음과 같은 ACID 특성을 충족해야 한다

1) Atomicity (원자성):
- 트랜잭션은 모두 실행되거나 모두 실행되지 않아야 한다

- 트랜잭션 내에서 수행되는 작업 중 하나라도 실패하면 트랜잭션의 모든 작업이 취소(롤백)되고, 데이터베이스는 트랜잭션이 시작되기 전 상태로 돌아가야 한다
- 예: 은행에서 돈을 송금할 때, A 계좌에서 돈을 출금하고 B 계좌에 입금하는 두 작업이 모두 성공해야지 하나만 성공하고 다른 하나는 실패하면 안 된다

 

2) Consistency (일관성):
- 트랜잭션이 완료되면 데이터베이스는 일관성 있는 상태여야 한다

- 데이터베이스 규칙(제약 조건, 데이터 무결성 등)을 항상 만족해야 한다
- 예: 계좌 잔액이 0 미만으로 떨어지지 않는다는 규칙이 있다면, 트랜잭션이 완료된 후에도 이 규칙이 유지되어야 한다

 

3) Isolation (고립성):
- 여러 트랜잭션이 동시에 수행될 때, 각 트랜잭션은 서로 독립적으로 실행되어야 한다

- 하나의 트랜잭션이 완료되기 전까지는 다른 트랜잭션이 해당 트랜잭션의 중간 상태를 보거나 영향을 받을 수 없어야 한다

- 두 사람이 동시에 은행 계좌에서 돈을 인출하려고 할 때, 하나의 트랜잭션이 완료되기 전까지 다른 트랜잭션은 그 영향을 받지 않도록 처리된다

 

4) Durability (내구성):
- 트랜잭션이 성공적으로 완료되면, 그 결과는 영구적으로 데이터베이스에 반영되어야 한다

- 시스템에 문제가 발생하더라도 트랜잭션의 결과가 손실되지 않도록 보장되어야 한다

- 예: 전산 오류나 전원 장애가 발생하더라도 트랜잭션이 완료된 상태는 유지되어야 한다


< 트랜잭션의 상태 >


- Active (활성 상태):
트랜잭션이 실행 중이며, 아직 완료되지 않은 상태.

 

- Partially Committed (부분 완료 상태):
트랜잭션이 마지막 명령을 실행했지만, 아직 데이터베이스에 확정(commit)되지 않은 상태.

 

- Committed (완료 상태):
트랜잭션이 성공적으로 완료되어 데이터베이스에 모든 변경사항이 반영된 상태.

 

- Failed (실패 상태):
트랜잭션 실행 중 오류가 발생하여 더 이상 진행할 수 없는 상태.

 

- Aborted (중단 상태):
트랜잭션이 실패하여 모든 변경사항이 취소(rollback)되고 데이터베이스가 트랜잭션 시작 전 상태로 돌아간 상태.


< 트랜잭션 제어 >


- Commit (커밋):
트랜잭션이 성공적으로 완료되었을 때, 데이터베이스에 그 결과를 영구적으로 반영하는 명령
예: conn.commit();

 

- Rollback (롤백):
트랜잭션 중에 문제가 발생하여, 데이터베이스의 모든 변경사항을 취소하고 트랜잭션이 시작된 이전 상태로 되돌리는 명령
예: conn.rollback();

 

- Savepoint (저장점):
트랜잭션 내에서 특정 시점까지의 작업을 저장하는 지점을 설정하는 기능

저장점을 설정하면, 문제가 발생했을 때 전체 트랜잭션을 롤백하지 않고 특정 저장점 이후의 작업만 롤백할 수 있다
예: conn.setSavepoint("save1");

 

 

 


refer to

https://mommoo.tistory.com/62

 

 

 

 

 

 

 

 

 

반응형

'IT > Database' 카테고리의 다른 글

MySQL Database 구축하기  (1) 2024.11.18
MySQL 데이터베이스 관리  (3) 2024.11.13
데이터 입력, 수정, 삭제  (0) 2024.10.07
SubQuery  (0) 2024.10.07
Database  (0) 2024.10.02