• 티스토리 홈
starryeye
  • 프로필사진
    starryeye
    • 분류 전체보기 (189)
      • C++ (17)
      • Java (24)
      • OOP (5)
      • Spring Reactive Stack (12)
        • Reactive Streams (3)
        • Netty (4)
        • Reactor (1)
        • Webflux (3)
        • DB, Cache 연동 (1)
      • Spring (90)
        • Core (17)
        • MVC (33)
        • Client (2)
        • Security (4)
        • DB, Cache 연동 (33)
      • DataBase (12)
        • RDBMS (2)
        • NoSQL (10)
      • Message Broker (6)
      • Web (4)
      • Network (4)
      • 대규모 시스템 설계 (15)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • 관계형 데이터베이스 조회 최적화
        2023년 04월 29일
        • starryeye
        • 작성자
        • 2023.04.29.:58
        반응형

        컴퓨터 구조 시간에 배운 것을 떠올려 보자..

         

        CPU가 데이터를 저장하거나 조회하기 위해서는 I/O Bus를 통해 동작되는 것을 떠올릴 수 있다.

         

        그리고, CPU가 데이터를 저장하기 위해서는 메모리와 디스크를 이용한다.

        메모리는 전원이 차단되면 휘발되기 때문에, 데이터의 영속성을 위해서는 결국 디스크에 저장 된다.

         

        디스크는 메모리에 비해 굉장히 느리다는 것을 익히 알고 있다.

         

        그래서..

        데이터베이스 성능의 핵심은 결국 디스크 접근을 최소화 하는 것이다.

         

        따라서, 메모리에 존재하는 데이터는 최대한 메모리로 끝내는게 좋다.

        -> 캐시 히트율 UP

         

        그러면 쓰기도 메모리에 쓰면 좋지 않을까..

         

        메모리에 쓰면 데이터 유실이 생길 수 밖에 없는데..

        그러기 위해서는 WAL(Write Ahead Log)를 사용한다.

         

        CUD 요청에 따른 WAL에 대해 간단히 알아보자..

        CUD 가 올 때마다 디스크에 접근하는 것은 너무 비효율적이다.

        그래서 메모리를 이용하기로 했다. 메모리에 쌓아 놨다가 한번에 디스크에 보내보자!

        그러면 메모리에 존재하는데 디스크에 없는 상황인데 DB가 죽으면?

        이때 WAL 기술(순차 IO)을 도입해서 하나의 파일에 로그 형태로 남긴다.

        그러면, 죽고 다시 살아나도 WAL을 실행시키면 정합성이 유지 된다.

         

        여기서 의문이 생긴다.

        WAL도 디스크에 저장하는 것 아니야?

        -> 랜덤 IO / 순차 IO 의 차이가 있다.

        순차 IO는 성능적으로 랜덤 IO 보다 좋다.

        우리 DB는 보통 랜덤 IO가 발생한다. (사용자의 요청이 무작위로 발생되어 무작위 위치를 조회하게 됨)

        하지만, WAL 은 로그를 파일에 쓰는 행위 이므로 파일 뒤에 순차적으로 쓰는 순차 IO이다.

        그래서, 성능적으로 좋다.

         

        그래서..

        데이터베이스 성능의 핵심은 결국 디스크 접근(랜덤 IO)을 최소화 하는 것이다.

        반응형

        'DataBase > RDBMS' 카테고리의 다른 글

        관계형 데이터베이스 조회와 쓰기 trade-off 1  (0) 2023.04.29
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바