티스토리 뷰

Study/정보처리기사

ACID란?

Corinee 2024. 10. 12. 14:24
728x90

ACID데이터베이스 트랜잭션이 가져야 할 4가지 필수 속성을 의미하며, 데이터 일관성을 보장하기 위한 중요한 개념입니다. 트랜잭션(Transaction)이란 데이터베이스에서 일어나는 여러 작업을 하나의 단위로 묶어 모두 성공하거나 모두 실패하도록 하는 작업 단위입니다. ACID 속성은 트랜잭션이 데이터베이스에서 안전하게 처리되도록 보장합니다.

ACID 속성의 4가지

1. Atomicity (원자성)

  • 정의: 트랜잭션이 모두 성공하거나 모두 실패해야 한다는 성질입니다. 트랜잭션에서 일어나는 모든 작업은 하나의 원자 단위(Atom)로 취급되며, 부분적으로 실행되거나 중단되어서는 안 됩니다.
    • 예시: 은행에서 계좌 이체 트랜잭션이 있을 때, 돈을 송금하는 작업과 받는 작업이 둘 다 완료되어야 합니다. 둘 중 하나라도 실패하면 모든 작업을 취소하고 트랜잭션을 시작 전 상태로 되돌립니다.
    • 실패 시 처리: 트랜잭션이 실패하면 Rollback을 통해 모든 변경 사항을 취소하고, 데이터는 트랜잭션이 시작되기 전 상태로 복구됩니다.

2. Consistency (일관성)

  • 정의: 트랜잭션 실행 전후에 데이터베이스가 일관된 상태를 유지해야 한다는 속성입니다. 즉, 트랜잭션이 성공적으로 완료되면 무결성 제약 조건을 위반하지 않고 일관된 상태로 데이터가 유지되어야 합니다.
    • 예시: 은행 계좌에서 한 사용자가 돈을 이체할 때, 트랜잭션이 끝난 후에 은행의 모든 계좌의 총합은 변하지 않고 일관성을 유지해야 합니다.
    • 트랜잭션 실패 시에도 데이터베이스는 일관성 있는 상태로 복구됩니다.

3. Isolation (격리성)

  • 정의: 동시에 실행되는 트랜잭션들이 서로에게 영향을 주지 않고 독립적으로 처리되어야 한다는 속성입니다. 즉, 한 트랜잭션이 완료되기 전까지 다른 트랜잭션은 중간 결과를 볼 수 없으며, 각각의 트랜잭션은 격리된 환경에서 실행됩니다.
    • 예시: A 사용자가 은행에서 돈을 이체하는 트랜잭션이 완료되기 전에는, B 사용자는 그 결과를 확인할 수 없습니다. 각 트랜잭션은 독립적으로 실행됩니다.
    • 격리성의 수준:
      1. Read Uncommitted: 트랜잭션이 커밋되지 않은 데이터를 읽을 수 있음 (가장 낮은 수준).
      2. Read Committed: 커밋된 데이터만 읽을 수 있음.
      3. Repeatable Read: 트랜잭션 내에서 동일한 데이터는 항상 같은 값을 읽을 수 있음.
      4. Serializable: 트랜잭션이 직렬화되어 실행됨 (가장 높은 수준의 격리).

4. Durability (지속성)

  • 정의: 트랜잭션이 성공적으로 완료되면, 그 결과는 시스템에 영구적으로 저장되어야 한다는 속성입니다. 시스템 장애가 발생하더라도 Commit된 데이터는 손실되지 않고 보존됩니다.
    • 예시: 사용자가 은행에서 돈을 이체한 후, 트랜잭션이 Commit되었다면, 시스템이 다운되거나 장애가 발생하더라도 이체 결과는 영구적으로 기록되어야 합니다.
    • 트랜잭션이 성공적으로 완료된 후에는 데이터베이스에 영구적으로 반영되며, Redo 작업을 통해 복구될 수 있습니다.

ACID 속성 간의 관계

  • 원자성(Atomicity)과 일관성(Consistency)은 트랜잭션이 성공적으로 완료되거나 실패했을 때, 데이터베이스가 일관된 상태로 유지되도록 보장합니다.
  • 격리성(Isolation)은 트랜잭션들이 동시에 실행될 때 서로의 중간 결과에 영향을 받지 않고 처리되도록 하며, 지속성(Durability)은 트랜잭션이 성공적으로 완료된 후 그 결과가 영구적으로 저장되도록 합니다.

ACID 속성과 관련된 주요 명령어

  1. Commit: 트랜잭션이 성공적으로 완료되어, 변경된 내용을 영구적으로 저장하는 명령어입니다.
  2. Rollback: 트랜잭션이 실패하거나 중단되었을 때, 트랜잭션 내의 모든 변경 사항을 취소하고, 트랜잭션 시작 시점으로 되돌리는 명령어입니다.

ACID 속성과 데이터 복구

  • 트랜잭션의 원자성을 보장하기 위해 트랜잭션 도중 장애가 발생하면 Undo 작업을 통해 이전 상태로 복구할 수 있습니다.
  • 지속성을 보장하기 위해, 트랜잭션이 Commit된 후에는 Redo 작업을 통해 트랜잭션 완료 상태를 복구할 수 있습니다.

예상 문제 유형

  1. ACID 속성의 이해:
    • 문제: 트랜잭션의 지속성(Durability)에 대한 설명으로 옳은 것은 무엇인가?
      • a) 트랜잭션이 성공하면 데이터베이스는 일관된 상태로 유지된다.
      • b) 트랜잭션이 실패하면 모든 작업이 취소된다.
      • c) 트랜잭션이 성공한 후, 시스템 장애가 발생해도 그 결과가 영구적으로 유지된다.
      • 정답: c (지속성은 트랜잭션이 완료된 후 그 결과가 영구적으로 반영되는 것을 의미합니다.)
  2. 트랜잭션 격리성 수준:
    • 문제: 트랜잭션이 커밋되지 않은 데이터를 읽을 수 있도록 허용하는 격리 수준은 무엇인가?
      • a) Serializable
      • b) Repeatable Read
      • c) Read Uncommitted
      • 정답: c (Read Uncommitted는 커밋되지 않은 데이터를 읽을 수 있습니다.)
  3. 트랜잭션 실패 시 복구 방법:
    • 문제: 트랜잭션이 실패했을 때, 트랜잭션을 취소하고 이전 상태로 되돌리는 작업은 무엇인가?
      • a) Commit
      • b) Rollback
      • c) Redo
      • 정답: b (Rollback은 실패한 트랜잭션을 취소하고 데이터베이스를 복구하는 작업입니다.)

요약

  • ACID 속성은 트랜잭션이 데이터베이스에서 안전하게 처리되도록 보장하는 4가지 기본 원칙입니다.
    1. 원자성(Atomicity): 트랜잭션이 모두 성공하거나 모두 실패해야 함.
    2. 일관성(Consistency): 트랜잭션 전후로 데이터의 무결성과 일관성을 유지해야 함.
    3. 격리성(Isolation): 트랜잭션이 동시 실행될 때 서로 영향을 미치지 않음.
    4. 지속성(Durability): 트랜잭션이 성공한 후 그 결과는 영구적으로 보존됨.
  • 이 속성들은 데이터베이스 시스템의 신뢰성과 일관성을 보장하는 데 중요한 역할을 하며, 트랜잭션이 오류 없이 성공적으로 실행되도록 돕습니다.
728x90