DBMS의 트랜잭션 관리: ACID 속성이란 무엇입니까?

데이터베이스 트랜잭션이란 무엇입니까?

A 데이터베이스 트랜잭션 DBMS에서 하나 이상의 데이터베이스 액세스 작업을 수반하는 논리적 처리 단위입니다. 간단히 말해서, 데이터베이스 트랜잭션은 모든 기업의 실제 이벤트를 나타냅니다.

시작 및 종료 트랜잭션 문 사이에 유지되는 모든 유형의 데이터베이스 액세스 작업은 DBMS에서 단일 논리적 트랜잭션으로 간주됩니다. 트랜잭션 동안 데이터베이스는 일관되지 않습니다. 데이터베이스가 커밋된 후에만 상태가 하나의 일관된 상태에서 다른 일관된 상태로 변경됩니다.

데이터베이스 트랜잭션
데이터베이스 트랜잭션

데이터베이스 트랜잭션에 대한 사실

  • 트랜잭션은 실행이 데이터베이스의 내용을 변경할 수도 있고 변경하지 않을 수도 있는 프로그램 단위입니다.
  • DBMS의 트랜잭션 개념은 단일 단위로 실행됩니다.
  • 데이터베이스 작업이 데이터베이스를 업데이트하지 않고 단지 데이터를 검색하는 경우, 이러한 유형의 트랜잭션을 읽기 전용 트랜잭션이라고 합니다.
  • 성공적인 트랜잭션은 데이터베이스를 한 CONSISTENT 상태에서 다른 CONSISTENT 상태로 변경할 수 있습니다.
  • DBMS 트랜잭션은 원자성, 일관성, 격리성 및 내구성이 있어야 합니다.
  • 데이터베이스가 트랜잭션 전에 일관성이 없는 상태였다면 트랜잭션 후에도 일관성이 없는 상태로 유지됩니다.

트랜잭션에 동시성이 필요한 이유는 무엇입니까?

데이터베이스는 액세스되는 공유 리소스입니다. 많은 사용자와 프로세스가 동시에 사용합니다. 예를 들어 은행 시스템, 철도 및 항공 예약 시스템, 주식 시장 모니터링, 슈퍼마켓 재고 및 계산대 등이 있습니다.

동시 액세스를 관리하지 않으면 다음과 같은 문제가 발생할 수 있습니다.

  • 하드웨어 오류 및 시스템 충돌
  • 동일한 트랜잭션의 동시 실행, 이중 자물쇠, 또는 느린 성능

거래현황

DBMS의 트랜잭션 개념의 다양한 상태는 다음과 같습니다.

주 정부 거래 유형
활성 상태 실행 프로세스가 시작되면 트랜잭션은 활성 상태로 전환됩니다. 이 상태에서 읽기 또는 쓰기 작업을 수행할 수 있습니다.
부분적으로 커밋됨 트랜잭션은 트랜잭션 종료 후 부분적으로 커밋된 상태가 됩니다.
커밋된 상태 트랜잭션이 상태에 커밋되면 이미 실행이 성공적으로 완료된 것입니다. 또한 모든 변경 사항은 데이터베이스에 영구적으로 기록됩니다.
실패한 상태 검사 중 하나라도 실패하거나 활성 상태에 있는 동안 트랜잭션이 중단되면 트랜잭션은 실패한 것으로 간주합니다.
종료된 상태 시스템을 떠나는 특정 트랜잭션을 다시 시작할 수 없는 경우 트랜잭션 상태가 종료됨 상태에 도달합니다.
상태 전환 다이어그램
데이터베이스 트랜잭션의 상태 전이 다이어그램

한 번 공부해보자 상태 전이 다이어그램 이는 트랜잭션이 이러한 다양한 상태 간에 어떻게 이동하는지 강조합니다.

  1. 트랜잭션이 실행을 선언하면 활성화됩니다. READ 또는 WRITE 작업을 실행할 수 있습니다.
  2. READ와 WRITE 작업이 완료되면 트랜잭션은 부분적으로 커밋된 상태가 됩니다.
  3. 다음으로, 일부 복구 프로토콜은 시스템 장애로 인해 트랜잭션의 변경 사항을 영구적으로 기록할 수 없게 되는 일이 없도록 보장해야 합니다. 이 확인이 성공하면 트랜잭션이 커밋되고 커밋된 상태로 들어갑니다.
  4. 확인이 실패하면 트랜잭션은 실패 상태로 전환됩니다.
  5. 트랜잭션이 활성 상태에 있는 동안 중단되면 실패 상태로 전환됩니다. 트랜잭션은 데이터베이스에 대한 쓰기 작업의 효과를 취소하기 위해 롤백되어야 합니다.
  6. 종료된 상태는 시스템을 떠나는 트랜잭션을 나타냅니다.

ACID 속성이란 무엇입니까?

ACID 속성 트랜잭션 처리 중에 데이터베이스의 무결성을 유지하는 데 사용됩니다. DBMS의 ACID는 다음을 의미합니다. A독성, C지속성, I위안, 그리고 D내구성.

  • Atom얼음: 트랜잭션은 단일 작업 단위입니다. 전체를 실행하거나 전혀 실행하지 않습니다. 부분 실행은 있을 수 없습니다.
  • 일관성 : 트랜잭션이 실행되면 일관된 상태에서 다른 상태로 이동해야 합니다.
  • 격리: 트랜잭션은 다른 트랜잭션과 분리되어 실행되어야 합니다(잠금 없음). 동시 트랜잭션 실행 중에 동시에 실행된 트랜잭션의 중간 트랜잭션 결과는 서로에게 제공되어서는 안 됩니다. (레벨 0,1,2,3)
  • 내구성 :· 트랜잭션이 성공적으로 완료된 후에는 데이터베이스의 변경 사항이 지속되어야 합니다. 시스템 장애가 발생한 경우에도 마찬가지입니다.

예제가 포함된 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%의 이자를 지급합니다.

두 트랜잭션이 함께 제출되면 트랜잭션 1이 트랜잭션 2보다 먼저 실행되거나 그 반대가 된다는 보장이 없습니다. 순서에 관계없이 결과는 거래가 순차적으로 발생하는 것과 같아야 합니다.

거래 유형

적용 분야 기준

  • 비분산 vs. 분산
  • 거래 보상
  • 거래 타이밍
  • 온라인 대 배치

작업 기반

  • 두 걸음
  • 한정된
  • 액션 모델

구조 기반

  • 플랫 또는 간단한 거래: 시작 및 종료 작업 사이에 실행되는 일련의 기본 작업으로 구성됩니다.
  • 중첩 트랜잭션: 다른 트랜잭션을 포함하는 트랜잭션입니다.
  • 워크플로우

일정이란 무엇입니까?

스케줄은 여러 병렬 트랜잭션의 단일 그룹을 생성하고 하나씩 실행하는 프로세스입니다. 각 거래에 지침이 나타나는 순서를 유지해야 합니다. 두 개의 트랜잭션이 동시에 실행되는 경우 한 트랜잭션의 결과가 다른 트랜잭션의 출력에 영향을 미칠 수 있습니다.

예시

Initial Product Quantity is 10
Transaction 1: Update Product Quantity to 50
Transaction 2: Read Product Quantity

Transaction 2 이전에 Transaction 1가 실행되면, 오래된 상품 수량 정보를 읽어오게 됩니다. 따라서 일정이 필요합니다.

데이터베이스에서 병렬 실행은 불가피합니다. 그러나 동시에 실행되는 트랜잭션 간에 동등 관계가 있는 경우 병렬 실행이 허용됩니다. 이 동등성은 3가지 유형입니다.

결과 동등성:

두 개의 스케줄이 실행 후 동일한 결과를 표시하는 경우, 이를 결과 동등 스케줄이라고 합니다. 이들은 일부 값에 대해 동일한 결과를 제공하고 다른 값 세트에 대해 다른 결과를 제공할 수 있습니다. 예를 들어, 한 트랜잭션은 제품 수량을 업데이트하는 반면, 다른 트랜잭션은 고객 세부 정보를 업데이트합니다.

동등성보기

View Equivalence는 두 일정의 트랜잭션이 유사한 작업을 수행할 때 발생합니다. 예를 들어, 한 트랜잭션은 제품 테이블에 제품 세부 정보를 삽입하고 다른 트랜잭션은 보관 테이블에 제품 세부 정보를 삽입합니다. 트랜잭션은 동일하지만 테이블은 다릅니다.

갈등 동등성

이 경우 두 트랜잭션이 동일한 데이터 세트를 업데이트/확인합니다. 실행 순서가 출력에 영향을 미치므로 트랜잭션 간에 충돌이 있습니다.

직렬성이란 무엇입니까?

직렬화 가능성은 트랜잭션이 차례로 실행되는 직렬 일정과 출력이 동일한 동시 일정을 검색하는 프로세스입니다. 일정 유형에 따라 두 가지 유형의 직렬성이 있습니다.

  • 충돌
  • 관측

제품 개요

  • 트랜잭션 관리란 DBMS에서 하나 이상의 데이터베이스 액세스 작업을 수반하는 논리적 처리 단위입니다.
  • 트랜잭션은 실행이 데이터베이스의 내용을 변경할 수도 있고 변경하지 않을 수도 있는 프로그램 단위입니다.
  • 동시 액세스를 관리하지 않으면 하드웨어 오류 및 시스템 충돌과 같은 문제가 발생할 수 있습니다.
  • 활성, 부분적으로 커밋됨, 커밋됨, 실패 및 종료는 중요한 트랜잭션 상태입니다.
  • ACID 속성의 전체 형태는 다음과 같습니다. DBMS is Atom안정성, 일관성, 격리성 및 내구성
  • 세 가지 DBMS 트랜잭션 유형은 응용 프로그램 영역 기반, 작업 및 구조입니다.
  • 스케줄은 여러 병렬 트랜잭션의 단일 그룹을 생성하고 하나씩 실행하는 프로세스입니다.
  • 직렬화 가능성은 트랜잭션이 차례로 실행되는 직렬 일정과 출력이 동일한 동시 일정을 검색하는 프로세스입니다.

이 게시물을 요약하면 다음과 같습니다.