트랜잭션은 데이터베이스 관리 시스템(DBMS)에서 수행되는 작업의 단위를 의미합니다. 이 작업은 하나 이상의 쿼리를 포함하며, 데이터베이스에서 상태를 변경하거나 정보를 검색하는 등의 작업을 포함할 수 있습니다. 트랜잭션은 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)의 특성을 만족해야 합니다. 이 특성들은 "ACID"라고 불리기도 합니다.
예를 통해 트랜잭션 개념을 자세하게 설명해보겠습니다. 가정하에 은행 시스템이 있다고 가정하겠습니다.
- 원자성(Atomicity): 트랜잭션은 모든 작업이 하나의 논리적 단위로 간주되어야 합니다. 즉, 모든 작업이 성공적으로 완료되거나, 아니면 전혀 수행되지 않아야 합니다.
예시: 고객이 은행 계좌로 100달러를 입금하는 작업과 이를 기록하는 작업이 하나의 트랜잭션으로 간주됩니다. 이 작업들은 모두 성공적으로 완료되거나, 입금은 취소되고 기록도 삭제되어야 합니다.
- 일관성(Consistency): 트랜잭션의 실행 전과 실행 후에도 데이터베이스는 일관된 상태를 유지해야 합니다. 즉, 트랜잭션이 실행되기 전의 조건에 따라 데이터베이스가 유효한 상태여야 합니다.
예시: 고객이 은행 계좌로 100달러를 입금하려고 시도하지만 계좌 잔액이 음수가 되지 않도록 합니다. 따라서 트랜잭션이 실행 전에는 계좌 잔액이 충분해야 합니다.
- 격리성(Isolation): 여러 트랜잭션이 동시에 실행될 때, 하나의 트랜잭션은 다른 트랜잭션에 의해 영향을 받지 않도록 격리되어야 합니다. 이렇게 함으로써 데이터베이스의 무결성이 유지됩니다.
예시: 동시에 두 명의 고객이 같은 은행 계좌로 돈을 입금하려고 할 때, 한 트랜잭션이 계좌 잔액을 변경 중인 동안 다른 트랜잭션은 해당 계좌에 대한 작업을 수행할 수 없습니다.
- 지속성(Durability): 트랜잭션이 성공적으로 완료된 후에는 해당 변경 사항이 영구적으로 데이터베이스에 저장되어야 합니다. 시스템 장애 또는 중단이 발생해도 데이터베이스가 복구될 때, 완료된 트랜잭션의 결과가 손실되어서는 안됩니다.
예시: 고객이 은행 계좌로 100달러를 입금하여 트랜잭션이 완료된 경우, 해당 입금 내역은 데이터베이스에 영구적으로 저장되어야 합니다.
이렇게 트랜잭션은 데이터베이스에서 데이터 무결성을 보장하고, 동시성 문제를 방지하기 위해 ACID 특성을 준수하며 수행됩니다.
'게으른 개발자의 끄적거림' 카테고리의 다른 글
이클립스 "location information has been specified incorrectly" 해결 방법 (0) | 2023.08.08 |
---|---|
알고리즘 종류와 이해 (0) | 2023.08.03 |
React 터미널 명령어 모음 (0) | 2023.07.27 |
크롬(Chrome) 관리자도구 설명 및 명령어 (0) | 2023.07.26 |
[JSP] iframe태그 사용 방법 (0) | 2023.07.25 |