ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL 레벨업 (1) DBMS 아키텍처
    DataBase/Oracle 2023. 8. 31. 22:55

     

     학습목표: RDB 내부적인 동작 모델 이해 (데이터 캐시, 워킹 메모리,저장소 구조 등) 

                     실행 계획과 옵티마이저 알아보기 

     

     

    1.DBMS 아키텍처 개요 

     

     - RDB별 아키텍처는 조금씩 다르긴하지만, 기본 구조는 모두 동일하다.

     - 이러한 공통구조를 이해한다면, DBMS가 가지는 특징도 쉽게 이해할 수 있을 것

     

    출처: SQL 레벨업 (미크)

      - 사용자로부터 전달된 SQL은 DBMS에서 다양한 처리를 거치고,

        저장 장치(SSD,HDD)에 있는 데이터에 접근해서 데이터를 읽고 쓴다.

      

    > 쿼리 평가 엔진:  계획을 세우고 실행하는 DBMS 핵심 기능 담당 모듈 

                                   SQL 분석, 실행계획 수립

     

    * 실행계획을 기반으로 데이터에 접근하는 방법을 접근 메서드라고 부른다.

    * 성능 향상 관점에서 매우 중요하다. 

     

    > 버퍼매니저 : DBMS는 버퍼라는 특별한 용도의 메모리 영역이 있다. 

                            이를 관리하는 것이 버퍼매니저이다. 

                            디스크 용량 매니저와 함께 연동하여 작동한다.

     

    > 디스크 용량 매니저: 데이터를 어디에 어떻게 저장할지 관리한다. 

                                         데이터 읽고 쓰기를 제어한다. 

     

    > 트랜잭션 매니저와 락 매니저:

        동시 다발적으로 데이터베이스에 접근할 때, 각각의 처리는 DBMS 내부에서 트랜잭션 단위로 관리된다.

         이러한 트랜잭션의 정합성을 유지하면서, 필요한 경우 데이터에 락을 거는 역할을 담당

     

    > 리커버리 매니저 : 데이터 정기적 백업, 복구 돕는 매니저 

     

    2. DBMS와 버퍼 

     

     - 버퍼는 성능에 중요한 영향을 미친다. 

     - 데이터를 버퍼에 어떤 식으로 확보할 것인가하는 부분에서 상충관계가 있다.

     

     

    출처: SQL 레벨업

     2.1 저장소와 관련된 상충관계

     

      - 기억비용은 데이터를 저장하는데 소모되는 비용이다.

      - 기억비용과 접근속도 사이에는 상충관계가 존재한다.

      - 따라서 많은 데이터를 영속적으로 저장하려 하면 속도를 잃고, 속도를 얻고자 하면, 많은 데이터를 영속적으로 

        저장하기 힘들다.

     

    2.2 DBMS와 기억장치의 관계

     

     - DBMS는 데이터 저장을 목적으로 하는 미들웨어이다. 따라서 기억장치와 밀접하게 연관되어 있다.

     

    > 하드디스크 : 2차 기억장치로 분류됨 적당히 느리고, 적당히 비용이 낮다.

                            일반적으로 DBMS는 항상 디스크 이외의 장소에 데이터를 올려 둔다.

     

    > 메모리; 기억비용이 비싸지만, 빠르다

                    모든 데이터를 올릴 순 없다.

     

    > 버퍼를 활용한 속도 향상

        - DBMS가 일부라도 데이터를 메모리에 올리는 것은 성능을 향상 시키기 위함이다. (SQL 실행속도)

        - 자주 접근하는 데이터는 메모리에 올려두면 빠르게 메모리를 읽어서 데이터 검색이 가능 

     

    *일반적으로 SQL 구분의 실행 시간 대부븐을 저장소(디스크)I/O 사이에서 발생한다.

     

    - 위와 같이 성능 향상을 목적으로 데이터를 저장하는 메모리를 버퍼 혹은 캐시라고 부른다.

    - 완충제라는 의미로 사용자와 저장소 사이에서 디스크 접근을 줄여주는 역할 수행 

    - 물리적 매체로 메모리가 주로 사용된다. 

    - 고속 접근이 가능한 버퍼에 '데이터를 어떻게, 어느정도 기간 동안'을 관리하는 것이 버퍼 매니저 이다.

     

    3. 메모리 위에 있는 두 개의 버퍼 

     

     - DBMS가 데이터 유지를 위해 사용하는 메모리는 데이터 캐시, 로그 버퍼 두 종류이다.

     - 대부분 두 개의 역할을 하는 메모리 영역을 가지고 있다. (사용자가 조절할 수 있음)

    출처: SQL 레벨업

     - 데이터 캐시 : 디스크에 있는 데이터 일부를 메모리에 유지하기 위해 사용하는 메모리 영역 

                             SELECT구문에서 선택하고 싶은 데이터가 운좋게 데이터 캐시에 있다면, 속도가 빠를 것이다!

     - 로그 버퍼: 갱신처리(INSERT,DELETE,UPDATE,MERGE)와 관련 있다.

                         DBMS 갱신과 관련된 SQL은 곧바로 저장소에 가서 데이터 변경 x

                         로그 버퍼 위에 변경 내용 보내고 이후 디스크에 변경 수행하도록 함(비동기)

     

    *결국 DBMS란 저장소의 느림을 어떻게 보완할 것인가를 계속 고민해 왔다함!

     

    4. 메모리의 성질과 상충관계 

     

     -메모리의 단점은 기억비용이 비싼 것 외에도 몇 가지 더 있다.

     

    - 휘발성 : 메모리는 영속성이 없다. DBMS를 껐다 키면 버퍼 위의 모든 데이터 삭제 된다.

    - 휘발성의 문제점:  - 장애 발생시 메모리에 데이터 모두 사라짐 -> 데이터 부정합 발생 

                                   - 데이터 캐시라면 상관없지만, 로그 버퍼 위에 존재하는 데이터는 큰 일이다.

                                   - DBMS가 갱신을 비동기로 처리하기 때문에 이는 발생 가능성이 꽤 높은 상황이다.

                                   - 이를 회피하기 위해 DBMS는 커밋 시점에는 반드시 갱신 정보가 로그 파일(영속 저장소 위 존재)

                                      에 쓴다. 커밋 시에는 반드시 동기 접근이 일어난다 (지연 발생 가능) 

     

    5. 시스템 특성과 상충관계 

     

     5.1 데이터 캐시와 로그 버퍼의 크기 

     

      -  데이터 캐시에 비해 로그 버퍼의 초깃값이 굉장히 작다 

      -   

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

    SQL - DML  (0) 2023.09.01
    오라클 sql - 인라인 뷰를 사용한 TOP-N SQL  (0) 2023.09.01
    오라클 - 객체 종류  (0) 2023.08.31
    SQL - 서브쿼리  (0) 2023.08.31
    SQL - 조인  (0) 2023.08.30
Designed by Tistory.