DBMS에서의 트랜잭션 관리: 상태, 유형 및 ACID
⚡ 스마트 요약
데이터베이스 트랜잭션 관리는 하나 이상의 데이터베이스 작업을 데이터베이스를 한 일관된 상태에서 다른 일관된 상태로 이동시키는 단일 논리적 단위로 취급합니다. 이는 ACID 속성, 정의된 트랜잭션 상태 및 스케줄링을 활용하여 동시 접근의 정확성을 유지합니다.

데이터베이스 트랜잭션이란 무엇입니까?
A 데이터베이스 트랜잭션 트랜잭션은 DBMS에서 하나 이상의 데이터베이스 접근 작업을 포함하는 논리적 처리 단위입니다. 간단히 말해, 데이터베이스 트랜잭션은 모든 기업에서 발생하는 실제 사건을 나타냅니다.
시작 및 종료 트랜잭션 문 사이에 발생하는 모든 유형의 데이터베이스 접근 작업은 DBMS에서 단일 논리적 트랜잭션으로 간주됩니다. 트랜잭션이 진행되는 동안 데이터베이스는 비일관적인 상태가 됩니다. 트랜잭션이 커밋된 후에야 데이터베이스 상태가 일관된 상태에서 다른 일관된 상태로 변경됩니다.

데이터베이스 트랜잭션에 관한 사실들
- 트랜잭션은 실행이 데이터베이스의 내용을 변경할 수도 있고 변경하지 않을 수도 있는 프로그램 단위입니다.
- DBMS의 트랜잭션 개념은 단일 단위로 실행됩니다.
- 데이터베이스 작업이 데이터베이스를 업데이트하지 않고 단지 데이터를 검색하는 경우, 이러한 유형의 트랜잭션을 읽기 전용 트랜잭션이라고 합니다.
- 성공적인 트랜잭션은 데이터베이스를 하나의 일관된 상태에서 다른 일관된 상태로 변경할 수 있습니다.
- DBMS 트랜잭션은 원자성, 일관성, 격리성 및 내구성을 갖춰야 합니다.
- 데이터베이스가 트랜잭션 전에 일관성이 없는 상태였다면 트랜잭션 후에도 일관성이 없는 상태로 유지됩니다.
트랜잭션에서 동시성이 필요한 이유는 무엇입니까?
데이터베이스는 공유 자원입니다. 여러 사용자와 프로세스가 동시에 사용합니다. 예를 들어 은행 시스템, 철도 및 항공 예약 시스템, 주식 시장 모니터링, 슈퍼마켓 재고 관리 및 계산대 시스템 등이 있습니다.
동시 액세스를 관리하지 않으면 다음과 같은 문제가 발생할 수 있습니다.
- 하드웨어 오류 및 시스템 충돌.
- 동일한 트랜잭션의 동시 실행, 이중 자물쇠또는 성능 저하.
이러한 공유 액세스를 제어하는 것은 담당자의 역할입니다. 동시성 제어이는 잠금 및 타임스탬프를 사용하여 트랜잭션을 안전하게 인터리빙하는 방식입니다. 그 전에 트랜잭션이 거치는 상태를 아는 것이 도움이 됩니다.
거래현황
DBMS의 트랜잭션 개념의 다양한 상태는 다음과 같습니다.
| 주 정부 | 기술설명 |
|---|---|
| 활성 상태 | 트랜잭션은 실행 프로세스가 시작될 때 활성 상태가 됩니다. 이 상태에서는 읽기 또는 쓰기 작업을 수행할 수 있습니다. |
| 부분적으로 커밋됨 | 거래가 완료되면 해당 거래는 부분적으로 확정된 상태가 됩니다. |
| 커밋된 상태 | 트랜잭션이 커밋 상태에 도달하면 실행이 성공적으로 완료되고 모든 변경 사항이 데이터베이스에 영구적으로 기록됩니다. |
| 실패한 상태 | 거래는 검사 항목 중 하나라도 실패하거나, 거래가 활성 상태에 있는 동안 중단될 경우 실패한 것으로 간주됩니다. |
| 종료된 상태 | 트랜잭션이 시스템에서 나가서 더 이상 재시작할 수 없을 때 트랜잭션의 상태는 종료 상태에 도달합니다. |
함께 공부해 봅시다 상태 전이 다이어그램 이는 트랜잭션이 이러한 다양한 상태 간에 어떻게 이동하는지 강조합니다.
- 트랜잭션이 실행을 시작하면 활성화됩니다. 활성화된 트랜잭션은 읽기 또는 쓰기 작업을 수행할 수 있습니다.
- 읽기 및 쓰기 작업이 완료되면 트랜잭션은 부분적으로 커밋된 상태가 됩니다.
- 다음으로, 일부 복구 프로토콜은 시스템 오류로 인해 거래 변경 사항을 영구적으로 기록할 수 없게 되는 일이 없도록 보장해야 합니다. 이 검사가 성공하면 거래는 커밋되고 커밋된 상태가 됩니다.
- 검사가 실패하면 거래는 실패 상태로 전환됩니다.
- 활성 상태의 트랜잭션이 중단되면 실패 상태로 전환됩니다. 데이터베이스에 대한 쓰기 작업의 영향을 되돌리려면 트랜잭션을 롤백해야 합니다.
- 종료된 상태는 시스템을 떠나는 트랜잭션을 나타냅니다.
산성의 특성은 무엇인가요?
ACID 속성 ACID는 트랜잭션 처리 중 데이터베이스의 무결성을 유지하는 데 사용됩니다. DBMS에서 ACID는 다음을 의미합니다. A독성, C지속성, I위안, 그리고 D내구성.
- Atom얼음: 트랜잭션은 단일 작업 단위입니다. 전체를 실행하거나 전혀 실행하지 않습니다. 부분 실행은 있을 수 없습니다.
- 일관성 : 트랜잭션이 실행되면 일관된 상태에서 다른 상태로 이동해야 합니다.
- 격리: 각 트랜잭션은 다른 트랜잭션과 완전히 독립적으로 실행되어야 합니다. 동시 실행 시, 동시에 실행되는 트랜잭션의 중간 결과는 서로에게 공개되어서는 안 됩니다.
- 내구성 : 거래가 성공적으로 완료되면 시스템 오류가 발생하더라도 데이터베이스의 변경 사항은 유지되어야 합니다.
DBMS에서 ACID 속성 예시
다음은 DBMS에서 ACID 속성의 예입니다.
Transaction 1: Begin X=X+50, Y = Y-50 END Transaction 2: Begin X=1.1*X, Y=1.1*Y END
거래 1은 계정 X에서 계정 Y로 50달러를 이체하고 있습니다.
거래 2는 각 계좌에 10%의 이자를 지급합니다.
두 거래가 동시에 제출되더라도 첫 번째 거래가 두 번째 거래보다 먼저 실행되거나 그 반대의 경우가 발생할 것이라는 보장은 없습니다. 순서와 관계없이 결과는 거래가 순차적으로 하나씩 이루어지는 것처럼 처리되어야 합니다.
거래 유형
적용 분야를 기준으로:
- 비분산형 vs. 분산형.
- 보상 거래.
- 거래 시점.
- 온라인 방식 vs. 배치 방식.
행동에 따라:
- 2단계.
- 제한된.
- 액션 모델.
구조를 기준으로:
- 평면 또는 단순 트랜잭션: 시작 작업과 종료 작업 사이에 실행되는 일련의 기본 작업으로 구성됩니다.
- 중첩 거래: 다른 거래를 포함하는 거래.
- 워크 플로.
일정이란 무엇입니까?
스케줄링은 여러 개의 병렬 트랜잭션을 하나의 그룹으로 묶어 하나씩 실행하는 과정입니다. 스케줄링 시에는 각 트랜잭션에 포함된 명령어의 순서를 유지해야 합니다. 두 개의 트랜잭션이 동시에 실행될 경우, 한 트랜잭션의 결과가 다른 트랜잭션의 출력에 영향을 줄 수 있습니다.
예시
Initial Product Quantity is 10 Transaction 1: Update Product Quantity to 50 Transaction 2: Read Product Quantity
Transaction 2 이전에 Transaction 1가 실행되면, 오래된 상품 수량 정보를 읽어오게 됩니다. 따라서 일정이 필요합니다.
데이터베이스에서 병렬 실행은 불가피합니다. 하지만 동시에 실행되는 트랜잭션들 사이에 동등 관계가 존재할 때 병렬 실행이 허용됩니다. 이러한 동등 관계는 세 가지 유형이 있습니다.
결과 동등성: 두 스케줄이 실행 후 동일한 결과를 나타내는 경우, 이를 결과가 동일한 스케줄이라고 합니다. 두 스케줄은 일부 값에 대해서는 동일한 결과를 제공하고 다른 값들에 대해서는 서로 다른 결과를 제공할 수 있습니다. 예를 들어, 한 트랜잭션은 제품 수량을 업데이트하고 다른 트랜잭션은 고객 정보를 업데이트합니다.
보기 동등성: 뷰 동등성은 두 스케줄의 트랜잭션이 유사한 작업을 수행할 때 발생합니다. 예를 들어, 한 트랜잭션은 제품 세부 정보를 제품 테이블에 삽입하고, 다른 트랜잭션은 제품 세부 정보를 아카이브 테이블에 삽입합니다. 이 경우 트랜잭션 자체는 동일하지만 삽입되는 테이블은 다릅니다.
갈등 동등성: 이 경우 두 개의 트랜잭션이 동일한 데이터 세트를 업데이트하거나 조회합니다. 실행 순서에 따라 결과가 달라지므로 트랜잭션 간에 충돌이 발생합니다.
직렬성이란 무엇입니까?
직렬화 가능성이란 트랜잭션이 순차적으로 실행되는 직렬 스케줄과 동일한 출력을 내는 동시 스케줄을 찾는 과정입니다. 스케줄 유형에 따라 직렬화 가능성에는 두 가지 유형이 있습니다.
- 충돌 직렬화 가능성.
- 직렬화 가능성을 확인하세요.
두 기준은 동등성을 판단하는 엄격성에서 차이가 있으며, 그 내용은 아래에 요약되어 있습니다.
| 아래 | 충돌 직렬화 가능성 | 뷰 직렬화 가능성 |
|---|---|---|
| 베이스 | 충돌하는 연산의 순서 | 읽기 및 최종 쓰기 관계 |
| Test | 선행 관계 그래프는 비순환적이어야 합니다. | 직렬 스케줄과의 등가성 보기 |
| 엄밀 | 더 엄격한, 부분집합 | 더 넓은 의미로, 시각 장애인 작가도 포함합니다. |
| 확인 비용 | 능률적 인 | 계산적으로 어려움 |
충돌 직렬화 가능한 스케줄은 모두 뷰 직렬화도 가능하지만, 그 역은 성립하지 않습니다. 이것이 바로 충돌 직렬화 가능성이 DBMS가 적용하는 실질적인 테스트인 이유입니다.

