CRUD 작업(Create, Read, Update, Delete)은 일반적으로 데이터베이스 시스템에서 트랜잭션 내에서 수행됩니다. 이러한 작업들은 먼저 메모리 상에서 이루어지며, 트랜잭션이 커밋될 때 비로소 데이터베이스의 영구 저장 장치(디스크)에 반영됩니다. 이제 커밋하는 순간에 무슨 일이 일어나는지 자세히 설명하겠습니다.

CRUD 작업의 메모리 상에서의 수행

  1. Create (생성):
    • 새로운 데이터가 테이블에 삽입됩니다. 이 데이터는 먼저 메모리의 버퍼나 캐시에서 처리됩니다.
  2. Read (읽기):
    • 데이터베이스에서 데이터를 조회하는 작업입니다. 조회된 데이터는 메모리에서 캐시되거나, 필요한 경우 디스크에서 읽어옵니다.
  3. Update (수정):
    • 기존 데이터를 수정하는 작업입니다. 이 변경 사항도 처음에는 메모리의 버퍼나 캐시에 적용됩니다.
  4. Delete (삭제):
    • 데이터를 삭제하는 작업입니다. 이 작업 역시 메모리 상에서 처리됩니다.

커밋하는 순간 일어나는 일

  1. 트랜잭션 로그에 기록 (Write-Ahead Logging, WAL):
    • 트랜잭션의 변경 사항은 먼저 디스크에 있는 로그 파일에 기록됩니다. 이 로그는 나중에 시스템 장애가 발생했을 때 복구하는 데 사용됩니다.
    • 이 작업은 데이터베이스의 일관성을 보장하는 데 중요하며, 로그에 기록된 내용이 실제 데이터 파일에 반영되기 전에 장애가 발생하더라도, 로그를 이용해 복구할 수 있습니다.
  2. 변경된 데이터를 디스크에 플러시 (Flush):
    • 커밋이 이루어지면, 메모리의 버퍼에 있던 변경 사항이 디스크의 실제 데이터 파일에 기록됩니다. 이 과정에서 데이터베이스의 데이터 페이지가 업데이트됩니다.
    • 데이터베이스는 변경된 메모리 페이지(더티 페이지)를 디스크에 기록하여 영구적으로 저장합니다.
  3. 락 해제:
    • 트랜잭션이 커밋되면, 해당 트랜잭션에서 잠겨 있던 자원(예: 테이블, 행)에 대한 잠금이 해제됩니다. 이를 통해 다른 트랜잭션이 이 자원에 접근할 수 있게 됩니다.
  4. 트랜잭션 종료:
    • 트랜잭션이 성공적으로 커밋되면, 트랜잭션은 종료 상태가 됩니다. 이 시점에서 트랜잭션 내의 모든 작업은 데이터베이스에 영구적으로 반영됩니다.
    • 데이터베이스 시스템은 이제 해당 트랜잭션의 로그를 더 이상 복구에 사용하지 않으므로 필요에 따라 로그를 삭제하거나 보관합니다.
  5. 시스템 안정성 보장:
    • 커밋이 완료된 시점부터, 트랜잭션의 결과는 시스템 장애가 발생해도 유실되지 않습니다. 디스크에 기록된 변경 사항은 영구적으로 유지됩니다.

요약

  • 메모리에서의 작업: CRUD 작업은 먼저 메모리(버퍼나 캐시)에서 처리됩니다.
  • 커밋 시점의 처리: 커밋 시점에 메모리의 변경 사항이 디스크에 영구적으로 기록됩니다. 로그 파일에 트랜잭션 기록이 저장되고, 변경된 데이터는 디스크의 실제 데이터 파일에 플러시됩니다.
  • 결과: 커밋이 완료되면, 트랜잭션 내의 모든 변경 사항이 영구적으로 데이터베이스에 반영되며, 시스템 장애가 발생해도 안전하게 보존됩니다.

따라서, 커밋은 메모리 상에서 일어난 작업을 디스크에 확정적으로 기록하여 데이터베이스의 무결성과 일관성을 유지하는 중요한 절차입니다.

'Database' 카테고리의 다른 글

뮤텍스(Mutex)와 세마포어(Semaphore)  (0) 2024.08.16
데이터베이스 트랜잭션에서 ACID  (0) 2024.08.14
FileReader와 BufferedReader  (0) 2024.08.12
UML(Unified Modeling Language)  (0) 2024.08.05
Artifact  (0) 2024.08.05

+ Recent posts