-
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