[RDBMS] 데이터 파일 I/O

orca·2024년 1월 13일

DB

목록 보기
3/3

데이터 파일 I/O

미리 읽기

  • SQL 서버는 기본적으로 쿼리가 요청한 데이터를 메모리로 가져오지만, 장래의 사용에 대비해 쿼리의 결과 범위 밖의 데이터도 함께 가져옴
  • SQL 서버는 필요할 것으로 예측되는 데이터를 미리 가져와 메모리의 버퍼 캐시에 저장함
  • 디스크 상 데이터를 버퍼 캐시에 저장하기 위한 빈 페이지가 필요함
    ➡️ 프리 리스트라는 링크드 리스트에 빈 페이지를 기록해둠

논리 기록과 물리 기록

  • 논리 기록 : 데이터가 변경되면, 우선 미리 쓰기 로그가 실행되고 이어서 버퍼 캐시의 데이터가 갱신되는데 이를 논리 기록이라고 함
  • 물리 기록 : 버퍼 캐시 상의 갱신된 데이터가 디스크에 반영되는 것
  • 더티 페이지 : 논리 기록은 되었으나 물리 기록이 되지 않은 버퍼 캐시의 데이터

체크 포인트

  • 일정 간격마다 더티 페이지를 디스크에 기록하는 조작
  • 체크포인트에 의해 버퍼 캐시의 더티 페이지가 플래시되어 디스크에 반영됨
  • 체크 포인트 프로세스
    1. 체크포인트 프로세스는 버퍼 캐시에 읽어들인 데이터를 정기적으로 스캔함
    2. 이때 더티 페이지가 발견되면 체크포인트 프로세스는 각 더티 페이지에 대해 물리 기록을 실행
    3. 더티 페이지가 없어질 때까지 비동기로 물리 기록 요구를 반복함

집중 기록

  • 일괄 조작시 생성되는 대량의 더티 페이지를 물리 기록하기 위한 동작
  • 물리 디스크 상의 데이터 파일에 작성하는 동작과 더티 페이지에 따라 물리 기록을 수행하는 동작이 병렬 실행됨
  • 일괄 조작
    • 입력해야 하는 모든 데이터에 대해 미리 쓰기 로그가 실행되면 처리율 저하
    • 대량 데이터의 입력을 일괄 조작으로 취급하면 개별 데이터의 갱신 로그는 기록되지 않음

지연 기록

  • 지연 기록기의 목표는 버퍼 캐시에 항상 일정량의 빈 페이지를 마련해두는 것
  • 지연 기록
    1. 프리 리스트에 등록되어 있는 페이지의 수가 임계값 이하일 때, 지연 기록기는 참조 빈도가 낮은 버퍼 캐시상의 페이지를 초기화함
    2. 만약 이 페이지가 더티 페이지라면 초기화하기 전 물리 기록을 수행함

0개의 댓글