logo

DBMS의 ACID 속성

트랜잭션은 데이터를 수정하고 검색할 수 있는 기본 작업입니다. 그러나 데이터베이스의 무결성을 보장하려면 오류/오류가 발생한 경우에도 일관성 정확성과 신뢰성을 유지하는 방식으로 이러한 트랜잭션을 실행하는 것이 중요합니다. 여기가 ACID 속성이 작용하는 곳입니다.

ACID는 원자성 일관성 격리 및 내구성을 나타냅니다.



자바 대체 문자열

ACID의 속성:

산성 속성' title=

ACID에는 네 가지 속성이 있습니다.

1. 원자성

원자성은 트랜잭션이 모든 작업이 성공하거나 아무것도 적용되지 않거나 전부 아니면 전무라는 것을 의미합니다. 일부가 실패하면 데이터베이스 일관성을 유지하기 위해 전체 트랜잭션이 롤백됩니다.

  • 저지르다 : 거래가 성공하면 변경 사항이 영구적으로 적용됩니다.
  • 중단/롤백 : 트랜잭션이 실패하면 트랜잭션 중 변경된 사항이 모두 삭제됩니다.

: 다음 거래를 고려하십시오 로 구성된 T1 그리고 T2 : 계좌에서 0원 이체 엑스 계정에 그리고 .

원자성' loading='lazy' title=원자성

T1이 완료된 후 T2가 완료되기 전에 트랜잭션이 실패하면 데이터베이스는 일관성 없는 상태로 남게 됩니다. 원자성을 사용하면 트랜잭션의 일부가 실패하면 전체 프로세스가 원래 상태로 롤백되고 부분 변경은 이루어지지 않습니다.



트랜잭션의 일관성은 트랜잭션 전후에 데이터베이스가 유효한 상태로 유지되어야 함을 의미합니다.

  • 유효한 상태는 정의된 모든 규칙 제약 조건 및 관계(예: 기본 키 외래 키 등)를 따릅니다.
  • 트랜잭션이 이러한 규칙을 위반하는 경우 손상되거나 유효하지 않은 데이터를 방지하기 위해 롤백됩니다.
  • 거래가 한 계좌에서 돈을 인출했지만 다른 계좌에 추가하지 않은 경우(이체 시) 일관성을 위반합니다.

: 은행 시스템의 모든 잔액의 합이 항상 일정해야 한다고 가정합니다. 이체 전 총 잔액은 0입니다. 거래 후 총 잔액은 0으로 유지되어야 합니다. 거래가 중간에 실패하는 경우(예: 한 계정은 업데이트하고 다른 계정은 업데이트하지 않음) 시스템은 거래를 롤백하여 일관성을 유지해야 합니다.

T가 발생하기 전의 총액 = 500 + 200 = 700 .
T가 발생한 후의 합계  = 400 + 300 = 700 .



격리' loading='lazy' title=일관성

3. 격리

격리는 트랜잭션이 서로 영향을 주지 않고 독립적으로 실행되도록 보장합니다. 한 트랜잭션에 의한 변경 사항은 커밋될 때까지 다른 트랜잭션에 표시되지 않습니다.

이는 동시 트랜잭션의 결과가 다음과 같은 문제를 방지하기 위해 하나씩 실행되는 것과 동일하도록 보장합니다.

리눅스 파일 시스템이 뭐야?
  • 더티 읽기:
  • 반복 불가능한 읽기: 두 번의 읽기 사이의 데이터 변경
  • 팬텀은 다음과 같이 읽습니다. 거래 중에 새 행이 나타납니다.

: 두 개의 트랜잭션 T와 T''를 생각해 보세요.

  • 엑스 = 500 Y = 500
격리' loading='lazy' title=격리

설명:

1. 거래 T:

  • T는 X에서 Y로 전송을 원합니다.
  • T 읽기 그리고 (값: 500)은 X(새 X = 450)에서 공제하고 Y(새 Y = 550)에 더합니다.

2. 거래 T'':

  • 티' ' X(500) 및 Y(500)를 시작하고 읽습니다.
  • 합계는 500 + 500 = 1000으로 계산됩니다.
  • 한편 X와 Y의 값은 각각 450과 550으로 변경됩니다.
  • 따라서 올바른 합은 450 + 550 = 1000이 되어야 합니다.
  • 격리는 다른 트랜잭션(T)이 아직 진행 중인 동안 T''가 오래된 값을 읽지 않도록 보장합니다.
  • 트랜잭션은 독립적이어야 하며 T''는 T가 커밋한 후에만 최종 값에 액세스해야 합니다.
  • 이는 T''에 의해 계산된 잘못된 합계와 같은 일관되지 않은 결과를 방지합니다.

4. 내구성:

내구성은 트랜잭션이 커밋되면 시스템이 실패하더라도 변경 사항이 영구적으로 저장되도록 보장합니다. 데이터는 비휘발성 메모리에 저장되므로 데이터베이스는 데이터 손실 없이 마지막 커밋된 상태로 복구할 수 있습니다.

: A 계좌에서 B 계좌로 자금을 성공적으로 이체한 후 변경 사항이 디스크에 저장됩니다. 커밋 직후 충돌이 발생하더라도 시스템이 복구되어 내구성을 보장할 때 전송 세부 정보는 그대로 유지됩니다.

ACID 속성이 DBMS 설계 및 운영에 미치는 영향

그만큼 전체적으로 ACID 속성은 각 트랜잭션이 다른 작업과 격리되어 일관된 결과를 생성하는 단일 단위 역할을 하는 작업 그룹이고 해당 작업에서 수행되는 업데이트가 지속적으로 저장되도록 하는 방식으로 데이터베이스의 정확성과 일관성을 보장하는 메커니즘을 제공합니다.

Java에서 문자열을 int로 변환하는 방법

ACID 속성은 트랜잭션이 성공적으로 완료되거나 중단된 경우 흔적이 남지 않도록 하여 DBMS의 데이터 무결성을 보호합니다. 부분 업데이트로 인해 데이터가 손상되는 것을 방지하고 데이터베이스가 유효한 상태 간에만 전환되도록 합니다.

2. 동시성 제어

ACID 속성은 동시 트랜잭션을 관리하기 위한 견고한 프레임워크를 제공합니다. 격리는 트랜잭션이 서로 간섭하지 않도록 보장하여 업데이트 손실, 일시적 불일치 및 커밋되지 않은 데이터와 같은 데이터 이상 현상을 방지합니다.

3. 복구 및 내결함성

내구성은 시스템이 충돌하더라도 데이터베이스가 일관된 상태로 복구될 수 있도록 보장합니다. 원자성 및 내구성 속성 덕분에 트랜잭션이 중간에 실패하더라도 데이터베이스는 일관된 상태로 유지됩니다.

재산 재산을 유지하는 책임
원자성거래 관리자
일관성애플리케이션 프로그래머
격리동시성 제어 관리자
내구성회복

데이터베이스의 ACID에 대한 중요한 사용 사례

최신 애플리케이션에서는 데이터의 신뢰성과 일관성을 보장하는 것이 중요합니다. ACID 속성은 다음과 같은 분야에서 기본입니다.

  • 은행업 : 송금, 입출금 등의 거래는 오류 및 사기 방지를 위해 엄격한 일관성과 내구성을 유지해야 합니다.
  • 전자상거래 : 트래픽이 많은 동안에도 재고 계산 주문 및 고객 세부 정보가 올바르고 일관되게 처리되도록 하려면 ACID 준수가 필요합니다.
  • 헬스케어 : 환자 기록 검사 결과 및 처방은 엄격한 일관성 무결성 및 보안 표준을 준수해야 합니다.