< 트랜잭션(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
'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 |