[SQL레벨업] 1장 1강~2강

가니·2023년 9월 21일
1

SQL레벨업

목록 보기
1/5
post-thumbnail

1장 DBMS 아키텍처


1강 DBMS 아키텍처 개요

위의 그림은 DBMS의 아키텍처이며, 순서대로 정리해 보겠습니다 :)

  1. SQL 구문의 역할
    전달 받은 SQL 구문은 DBMS를 통해 다양한 처리를 수행한다.
    그럼 다양한 처리란 무엇을 의미할까 ?

  2. DBMS 내부 기능

  • 쿼리 평가 엔진

    쿼리 평가 엔진은 사용자로부터 입력받은 SQL 구문을 분석하고, 어떤 순서로 기억장치의 데이터에 접근할지를 결정한다.

이때 결정되는 계획을 실행 계획이라고 불리며, 실행 계획을 기반으로 접근하는 방법을 접근 메서드라고 부른다.

  • 버퍼 매니저
    DBMS는 특별한 용도로 사용하는 메모리 영역(버퍼)을 확보해두는데, 이 영역을 관리하는 것을 버퍼 매니저라고 한다.

  • 디스크 용량 매니저
    디스크 용량 매니저는 어디에 어떻게 데이터를 저장할지를 관리하며,데이터의 읽고쓰기를 제어한다.

  • 트랜잭션 매니저와 락 매니저
    트랜잭션의 정합성을 유지하면서 실행시키는 것이 트랜잭션 매니저,
    필요한 경우 데이터에 락을 걸어 다른 사람의 요청을 대기시키는 것이 트랜잭션 매니저라고 한다.

  • 리커버리 매니저
    데이터를 정기적으로 백업하고, 문제가 발생했을 때 복구해주는 것이 리커버리 매니저다.


2강 DBMS와 버퍼

버퍼는 성능에 굉장히 중요한 영향을 미친다.
1. 기억장치 분류 계층

위 사진은 기억장치의 계층을 표현한 사진이다.
위로 높아질 수록 접근 속도가 높아지며, 기억 비용 또한 높아진다.
이때 기억 비용이란 데이터를 저장하는데 소모되는 비용을 말하며, 메모리에 비해 하드디스크는 비용이 저렴하기 때문에 기억 비용이 메모리에 비해 낮다.
대신 접근 속도도 낮다!^^

트레이드오프 1
많은 데이터를 영속적으로 저장하려면 속도를 잃고, 속도를 높이려면 많은 데이터를 영속적으로 저장하기가 힘들다.

  1. DBMS와 기억장치의 관계
  • 하드디스크
    DBMS가 데이터를 저장하는 매체는 대부분 하드디스이다. 하지만 접근 속도를 높이기 위해 일부 데이터를 메모리에 올려둔다.

  • 메모리
    디스크에 비해 기억 비용이 비싸기 때문에, 내부 데이터를 모두 메모리에 올리는 것은 불가능하다.

  • 버퍼를 활용한 속도 향상
    SQL 구문의 실행 속도를 빠르게 만들기 위해 자주 접근하는 데이터를 메모리 위에 올려둔다 ! -> 조회 성능 향상
    성능 향상을 목적으로 데이터를 저장하는 메모리를 버퍼 또는 캐시라고 부른다.
    데이터를 어떻게 어느 정도의 기간 동안 올릴 것인지 관리하는 것 -> 버퍼 매니저

  1. 메모리 위에 있는 두개 버퍼
  • 데이터 캐시
    디스크에 있는 데이터 일부를 메모리에 유지하기 위해 사용하는 메모리 영역을 말한다.
  • 로그 버퍼
    갱신처리(insert,update,delete,merge)와 관련이 있는데, 갱신과 관련된 SQL 구문을 받아 로그 버퍼 위에 변경 정보를 보내고 이후 디스크에 변경을 수행한다.

? 왜 로그 버퍼에 먼저 기록한 후 디스크를 변경하는 것일까 ?

  • 디스크에만 저장하게 되면,조회와 갱신할 때 많은 시간이 소모되며 사용자는 장기간 대기하게 된다.
  • 갱신 정보를 메모리에 우선 저장한 후, 유저에게 '처리 완료됨'을 전달, 이후 디스크에서 처리 (비동기) -> 정상적으로 DB가 처리되며 사용자도 기다리는 시간을 줄일 수 있다.
  1. 메모리 성질이 초래하는 트레이드오프
  • 휘발성
    메모리는 데이터의 영속성이 없어 하드웨어 전원이 꺼지면 모두 사라진다.

  • 휘발성 문제점
    문제점 1 -> 장애 발생시, 데이터가 모두 사라져 데이터 부정합 발생
    문제점 2 -> DBMS가 다운돼,로그 파일 정보가 사라짐
    해결방법 -> DBMS 커밋 시점에 갱신 정보를 로그파일에 작성 = Commit(갱신 처리 확정)
    Commit할 때 반드시 디스크에 동기 접근이 일어난다 !

트레이드오프2
디스크에 동기 처리를 한다면 정합성은 높아지지만 성능이 낮아진다.
반대로 성능을 높이려면 데이터 정합성이 낮아진다.

  1. 시스템 특성에 따른 트레이드 오프
  • 데이터 캐시와 로그 버퍼의 크기
    데이터 캐시에 비해 로그 버퍼의 초깃값이 굉장히 작다 (Oracle,PostgreSQL,Mysql)
    데이터베이스가 기본적으로 갱신보다 조회를 메인으로 처리한다고 생각하기 때문!

트레이드오프3
조회가 많다면, 데이터 캐시 크기를 늘리고
갱신이 많다면, 로그 버퍼의 크기를 늘린다.

  1. 워킹메모리
    정렬 또는 해시 관련 처리에 사용되는 작업용 영역을 말한다.
    종료되면 해제되는 임시 영역이지만, 조회하는 데이터가 메모리양보다 영역 크기가 작다면 DBMS 저장소를 사용한다.
    문제점 -> 저장소에서 작업을 함으로, 접근 속도가 느리다.

DBMS는 어떠한 문제가 발생할 때 해결하고자 계속 노력하는 점이 미들웨어라고 생각할 수 있다. 끝까지 처리하려고 노력하는 이유는 DBMS가 중요한 데이터를 보관하고 처리할 때, 운영체제 정도의 급으로 처리 계속성을 담보하려 하기 때문이다.

profile
동료에게 선한 영향력을 전달할 수 있는 개발자가 되고싶닷 ദ്ദി(☆⸝⸝•̀ᴥ•́⸝⸝)

0개의 댓글