트랜잭션 (Transaction)
트랜잭션은 데이터베이스의 상태를 변환시키기 위해 수행하는 작업의 단위입니다.
이는 아래의 질의어(SQL)를 이용하여 데이터베이스를 접근하는 것을 의미합니다.
- SELECT
- INSERT
- DELETE
- UPDATE
여기서 작업의 단위는 질의어 한 문장이 아닙니다.
작업의 단위는 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미합니다.
예를 들어, 게시판에 글을 작성하는 상황을 생각해볼 수 있습니다.
사용자가 게시판에 글을 작성하고 올리기 버튼을 누릅니다. (INSERT 문을 사용해 게시물 데이터 추가)
게시판에 다시 돌아오면 사용자가 쓴 글이 업데이트된 상태를 볼 수 있습니다. (SELECT 문을 사용해 최신 정보 유지)
여기서 작업의 단위는 INSERT 문과 SELECT 문 두 개를 합친 것으로, 이를 하나의 트랜잭션이라고 합니다.
트랜잭션의 특징
- 원자성 (Atomicity) : 트랜잭션이 DB에 모두 반영되거나 혹은 전혀 반영되지 않아야 합니다.
- 일관성 (Consistency) : 트랜잭션의 작업 처리 결과는 항상 일관성이 있어야 합니다.
- 독립성 (Isolation) : 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없습니다.
- 지속성 (Durability) : 트랜잭션이 성공적으로 완료되었다면, 결과는 영구적으로 반영되어야 합니다.
Commit과 Rollback
- Commit
- 하나의 트랜잭션이 성공적으로 끝났고 DB가 일관성 있는 상태임을 알리기 위해 사용합니다.
- Commit을 사용하면, 수행했던 트랜잭션이 로그에 저장돱니다.
- 후에 수행했었던 트랜잭션 단위로 Rollback 연산을 할 수 있도록 지원합니다.
- Rollback
- 하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진 경우에 사용합니다.
- Rollback을 사용하면, Last Consistent State(ex. 트랜잭션의 시작 상태)로 돌아갈 수 있습니다.
REDO와 UNDO
- REDO
- REDO는 트랜잭션 로그에서 데이터베이스로 Commit 된 트랜잭션 중에 변경된 내용을 다시 적용하기 위해 데이터베이스 복구에 사용되는 메커니즘입니다.
- 시스템 오류가 발생한 경우, REDO를 사용하면 커밋된 트랜잭션의 변경 사항이 다시 실행되어 데이터베이스를 일관된 상태로 되돌릴 수 있습니다.
- UNDO
- UNDO는 불완전하거나 중단된 트랜잭션의 영향을 되돌리기 위해 데이터베이스 복구에 사용되는 메커니즘입니다.
- 트랜잭션이 실패하거나 중단되는 경우, UNDO를 사용하면 불완전한 트랜잭션으로 인한 변경 사항이 제거되어 데이터베이스의 무결성을 유지할 수 있습니다.
'CS 지식 > 데이터베이스' 카테고리의 다른 글
[CS] 인덱스 (0) | 2024.02.01 |
---|---|
[CS] 정규화 (0) | 2024.01.31 |
[CS] 이상 현상 (0) | 2024.01.30 |
[CS] SQL - JOIN (0) | 2024.01.17 |
[CS] SQL - 추가 문법 정리 (0) | 2024.01.16 |
트랜잭션 (Transaction)
트랜잭션은 데이터베이스의 상태를 변환시키기 위해 수행하는 작업의 단위입니다.
이는 아래의 질의어(SQL)를 이용하여 데이터베이스를 접근하는 것을 의미합니다.
- SELECT
- INSERT
- DELETE
- UPDATE
여기서 작업의 단위는 질의어 한 문장이 아닙니다.
작업의 단위는 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미합니다.
예를 들어, 게시판에 글을 작성하는 상황을 생각해볼 수 있습니다.
사용자가 게시판에 글을 작성하고 올리기 버튼을 누릅니다. (INSERT 문을 사용해 게시물 데이터 추가)
게시판에 다시 돌아오면 사용자가 쓴 글이 업데이트된 상태를 볼 수 있습니다. (SELECT 문을 사용해 최신 정보 유지)
여기서 작업의 단위는 INSERT 문과 SELECT 문 두 개를 합친 것으로, 이를 하나의 트랜잭션이라고 합니다.
트랜잭션의 특징
- 원자성 (Atomicity) : 트랜잭션이 DB에 모두 반영되거나 혹은 전혀 반영되지 않아야 합니다.
- 일관성 (Consistency) : 트랜잭션의 작업 처리 결과는 항상 일관성이 있어야 합니다.
- 독립성 (Isolation) : 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없습니다.
- 지속성 (Durability) : 트랜잭션이 성공적으로 완료되었다면, 결과는 영구적으로 반영되어야 합니다.
Commit과 Rollback
- Commit
- 하나의 트랜잭션이 성공적으로 끝났고 DB가 일관성 있는 상태임을 알리기 위해 사용합니다.
- Commit을 사용하면, 수행했던 트랜잭션이 로그에 저장돱니다.
- 후에 수행했었던 트랜잭션 단위로 Rollback 연산을 할 수 있도록 지원합니다.
- Rollback
- 하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진 경우에 사용합니다.
- Rollback을 사용하면, Last Consistent State(ex. 트랜잭션의 시작 상태)로 돌아갈 수 있습니다.
REDO와 UNDO
- REDO
- REDO는 트랜잭션 로그에서 데이터베이스로 Commit 된 트랜잭션 중에 변경된 내용을 다시 적용하기 위해 데이터베이스 복구에 사용되는 메커니즘입니다.
- 시스템 오류가 발생한 경우, REDO를 사용하면 커밋된 트랜잭션의 변경 사항이 다시 실행되어 데이터베이스를 일관된 상태로 되돌릴 수 있습니다.
- UNDO
- UNDO는 불완전하거나 중단된 트랜잭션의 영향을 되돌리기 위해 데이터베이스 복구에 사용되는 메커니즘입니다.
- 트랜잭션이 실패하거나 중단되는 경우, UNDO를 사용하면 불완전한 트랜잭션으로 인한 변경 사항이 제거되어 데이터베이스의 무결성을 유지할 수 있습니다.
'CS 지식 > 데이터베이스' 카테고리의 다른 글
[CS] 인덱스 (0) | 2024.02.01 |
---|---|
[CS] 정규화 (0) | 2024.01.31 |
[CS] 이상 현상 (0) | 2024.01.30 |
[CS] SQL - JOIN (0) | 2024.01.17 |
[CS] SQL - 추가 문법 정리 (0) | 2024.01.16 |