[DB] DBMS 구조

박세건·2025년 3월 2일
0

CS 학습

목록 보기
6/25
post-thumbnail

✅ DBMS 구조와 Buffer 관리, Steal & No-Force 정책 이해하기


✅ 1. DBMS 구조

① 사용자 인터페이스 (User Interface)

  • 사용자가 SQL 문을 입력하는 창구.
  • SELECT, INSERT, UPDATE, DELETE와 같은 SQL을 전달.

② 쿼리 처리기 (Query Processor)

SQL을 분석하고 실행 계획을 세우는 단계.

  • 파서 (Parser): SQL 문법 검사.
  • 옵티마이저 (Optimizer): 가장 효율적인 실행 계획 수립.
  • 실행 엔진 (Execution Engine): 실제 SQL 실행.

③ 스토리지 매니저 (Storage Manager)

데이터를 안전하고 빠르게 꺼내거나 저장하는 역할.

  • 버퍼 매니저 (Buffer Manager): 디스크 → 메모리에 페이지 단위로 데이터 로딩 (Buffer Pool 관리).
  • 트랜잭션 매니저: 트랜잭션 관리.
  • 락 매니저: 동시성 제어.
  • 로그 매니저: 장애 복구용 (Redo, Undo 처리).

④ 디스크에 저장된 데이터 (Physical Storage)

  • 실제 데이터가 물리적으로 저장되는 영역.
    • 데이터 파일
    • 인덱스 파일
    • 로그 파일

✅ 2. Buffer와 Buffer Page

DBMS는 디스크에 있는 데이터를 통째로 가져오지 않고, 페이지(Page) 단위로 잘라서 메모리로 가져옴.
이 데이터를 담는 메모리 공간을 Buffer Pool(버퍼 풀) 이라 하고,
메모리에 올라온 한 페이지를 Buffer Page(버퍼 페이지) 라고 함.

👉 버퍼 페이지에서 데이터를 수정 후, 필요에 따라 디스크에 다시 기록.


✅ 3. Buffer 관리 정책이 중요한 이유

수정된 데이터를 디스크에 언제, 어떻게 저장할지에 따라 복구 방식이 달라지기 때문!
이때 필요한 복구 작업이 바로 UNDO와 REDO.


✅ 4. UNDO, REDO 개념

구분내용이유
UNDO실패한 트랜잭션이 수정한 데이터를 되돌림트랜잭션 중 수정한 데이터가 디스크에 저장됐을 수 있기 때문
REDO성공한 트랜잭션의 작업을 다시 반영커밋했지만, 데이터가 디스크에 저장되지 않았을 수 있기 때문

✅ 5. Buffer 관리 정책 (정책에 따라 UNDO, REDO 발생)

✅ UNDO 관련 정책

정책설명특징
Steal트랜잭션이 끝나기 전에 수정된 페이지를 디스크에 기록 가능✅ UNDO 필요 (많은 DBMS 사용)
No-Steal트랜잭션이 끝날 때까지 디스크에 쓰지 않음❌ UNDO 필요 없음 (대신 버퍼 공간 많이 차지)

✅ REDO 관련 정책

정책설명특징
Force트랜잭션 종료 시 수정된 페이지를 무조건 디스크에 기록❌ REDO 필요 없음 (I/O 부하 ↑)
No-Force트랜잭션이 끝나도 디스크에 안 쓸 수 있음✅ REDO 필요 (대부분의 DBMS 사용)

✅ 6. DBMS는 왜 Steal + No-Force 정책을 사용할까?

✅ 이유 1) 버퍼 크기의 한계

  • No-Steal이면 트랜잭션 끝날 때까지 수정된 페이지를 버퍼에 계속 보관해야 함.
  • 여러 트랜잭션이 동시에 실행되면 버퍼 공간이 금방 부족.
  • 그래서 Steal을 사용해 버퍼가 부족할 때만 디스크에 페이지를 내보내서 공간을 확보.

✅ 이유 2) 성능 저하 방지

  • Force를 사용하면 트랜잭션이 끝날 때마다 디스크에 기록 → 디스크 I/O 부하 심각.
  • 버퍼의 캐싱 효과도 사라짐 (디스크에 쓰면 캐시 유지 의미가 줄어듦).
  • 그래서 No-Force를 사용해 트랜잭션 종료 후에도 바로 디스크에 쓰지 않음 → 성능 향상.

✅ Steal을 쓰면 캐싱 효과가 떨어지는 거 아닌가?

👉 그렇지 않음!

  • Steal은 버퍼가 부족할 때만 디스크에 쓰기 때문에,
  • LRU 같은 버퍼 교체 알고리즘을 이용해 자주 쓰는 페이지는 최대한 버퍼에 유지.
  • 그래서 Steal을 사용해도 캐싱 효과를 유지하면서 공간을 확보할 수 있음.

✅ ✅ 최종 요약

정책이유발생 복구
Steal버퍼 공간 확보✅ UNDO 필요
No-Force디스크 I/O 줄이고 성능 향상✅ REDO 필요

👉 그래서 대부분의 DBMS는 Steal + No-Force 조합을 사용합니다! 🚀

profile
멋있는 사람 - 일단 하자

0개의 댓글