데이터 처리/SQL

SQL 성능 향상을 위한 공부: 1-1) DBMS 아키텍처 이해하기

yourhm 2025. 7. 1. 13:52

무엇을 공부해야 할까?

1. DBMS 내부 처리 과정을 이해해야 한다.

SQL 성능을 높이기 위해서는 DBMS 내부 처리 과정을 이해해야 한다.

 

SQL은 선언적 언어이기 때문에 “어떻게 처리할지”가 아니라 “무엇을 원하는지”만을 기술함.

어떻게 실행할지는 사용자가 아닌 DBMS가 결정함. DBMS는 입력받은 SQL을 분석해 내부적으로 실행 계획을 세우고 수행함.
→ 즉 내가 쓴 쿼리와 DBMS가 실제로 수행하는 작업 사이에는 차이가 있고, 내가 어떤 쿼리를 작성했을 때 DBMS가 실제로 어떤 식으로 작업하는지 이해해야 성능에 최적화된 쿼리를 작성할 수 있다.

따라서 단순히 쿼리 문법만 아는 것만으로는 성능을 고려한 쿼리를 작성할 수 없으며 성능 문제가 발생해도 원인을 정확히 파악할 수 없다.

 

 

2. DBMS 내부 처리 과정을 이해하려면, 다음과 같은 요소들을 공부해야 한다.

1) DBMS 아키텍처에 대한 전반적인 이해

| 전체 시스템이 어떻게 동작하는지 기본 골격을 알아야 세부 요소들이 어떤 영향을 주는지 연결해서 이해할 수 있음. 

 

- DBMS의 구성 요소 개요
- 쿼리 평가 엔진, 버퍼 매니저, 디스크 매니저, 트랜잭션/락/리커버리 매니저의 역할
- 이들이 쿼리 실행에 어떻게 관여하는지


2) 실행 계획 분석

| 쿼리가 실제로 어떤 방식으로 실행되는지 이해해야 쿼리 작성 능력이 향상됨. 실전에서 "이 쿼리는 왜 느릴까?"를 판단할 수 있는 눈을 갖게 됨.

 

- 쿼리 평가 엔진(SQL 실행 단계, 옵티마이저 원리, 실행 계획 해석)

- 인덱스 구조(B-tree, 인덱스 스캔 방식, 효율적인 인덱스 설계)

- SQL 튜닝 기법(WHERE절 최적화, 조인 순서, GROUP BY/ORDER BY 줄이기 등)

 

3) 성능 병목 원인을 더 깊이 이해하기 (필요에 따라)

항목 학습 내용 이유
버퍼 매니저 캐시 구조, 페이지 교체, 캐시 히트율 I/O 비용 이해 및 캐시 친화적 쿼리 작성에 도움
디스크 공간 매니저 테이블 저장 구조, 페이지 정렬, 조각화 디스크 접근 패턴 이해로 테이블 설계 최적화 가능
통계 정보/힌트 옵티마이저 통계 수집 및 힌트 종류 잘못된 실행 계획을 유도하는 문제 해결 가능

 

 

 


DBMS 아키텍처 개요

현재 사용되는 DBMS 제품은 다양하며 각 제품마다 다른 특징이 있고 내부 아키텍처 또한 조금씩 다르다. 하지만 대부분 관계 모델이라는 수학적인 이론을 바탕으로 기능을 제공하는 목적은 동일하기 때문에 기본 구조는 같다. 공통적인 기본 구조를 이해하면 각각의 DBMS가 갖는 특징도 쉽게 이해할 수 있을 것이다.

 

[심화] 관계 모델 (Relational Model)이란?

실제 세계의 데이터를 관계라는 개념을 사용해 표현한 데이터 모델. 데이터 모델이란 " ~~~ 개념을 사용해 데이터를 표현해보세요"라고 정의하는 것을 말하며, 관계형 모델은 그중에 하나라고 할 수 있다.

에드거 커드(E.F. Codd)가 정의한 수학적 이론으로, 집합론(Set Theory)과 술어 논리(Predicate Logic)에 기반한다. 핵심 개념은 릴레이션, 튜플, 어트리뷰트이다.

- 릴레이션(Relation): 데이터의 집합(논리적인 테이블)
- 튜플(Tuple): 릴레이션의 원소(논리적인 행)
- 어트리뷰트(Attribute) 튜플의 구성 요소(논리적인 열)

 

 

 

DBMS 아키텍처의 기본 구조 

 

DBMS는 사용자로부터 SQL 구문을 전달받아

내부에서 다양한 처리를 수행한 후

저장 장치에 접근하여 데이터를 읽거나 쓴다.

 

 

DBMS 내부에는 아래와 같은 역할은 하는 존재들이 있다.

 

1. 쿼리 평가 엔진 

사용자로부터 SQL 구문을 입력받아서 분석하고, 어떤 순서로 기억장치의 데이터에 접근할지 결정 및 실행하는 DBMS의 핵심 기능을 담당하는 모듈이다. 쿼리 평가 엔진은 성능과 깊은 관련이 있음.

 

→ 이때 결정되는 계획을 '실행 계획'이라고 부른다.

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

 

 

2. 버퍼 매니저

'디스크'에 직접 접근하여 데이터를 읽는 경우 속도가 매우 느리다. 그래서 DBMS는 자주 혹은 최근에 사용된 데이터를 '메모리'에 임시로 저장해두고 먼저 빠르게 접근하도록 한다. 이처럼 DBMS는 효율적인 데이터 처리 및 관리를 위해 컴퓨터의 '메모리'의 일정 영역을 미리 확보해두고 DBMS 전용으로 사용한다. 이렇게 메모리에서 DBMS 전용으로 사용하기 위해 미리 확보해둔 영역을 '버퍼'라고 한다.

 

이 메모리 영역(=버퍼)을 관리하는 것이 버퍼 매니저의 역할이다. 버퍼 매니저는 아래의 디스크 용량 매니저와 함께 연동되어 작동하며, 이러한 메커니즘도 성능과 깊은 관련이 있다.

 

 

3. 디스크 용량 매니저

데이터베이스는 데이터를 영구적으로 저장해야 한다. 이 때 디스크 용량 매니저는 어디에 어떻게 데이터를 저장할 지 관리하며 데이터의 읽고 쓰기를 제어하는 역할을 한다.

 

 

4. 트랜잭션 매니저 & 락 매니저

일반적으로 기업에서 데이터베이스를 사용하는 사람은 한 명이 아니다. 경우에 따라 수백에서 수천 명의 사람이 동시에 데이터베이스에 접근해서 사용하게 되는데, 이때 각각의 처리는 DBMS 내부에서 트랜잭션이라는 단위로 관리된다.

 

트랜잭션 매니저는 이러한 트랜잭션의 정합성을 유지하면서 실행시키는 역할을,

락 매니저는 위의 과정에서 필요한 경우 데이터에 락을 걸어 다른 사람의 요청을 대기시키는 역할을 한다.

 

 

5. 리커버리 매니저

예기치 못하게 시스템에 장애가 발생할 경우를 대비하여 데이터를 정기적으로 백업하고, 이러한 상황이 발생했을 때 복구해주는 기능을 수행하는 역할을 한다.

 

 

 

[참고]

https://victorydntmd.tistory.com/127

 

[DB이론] 관계 모델( Relation Model ) - 논리적 설계

1. 관계 모델 ( Relation Model )관계형 모델은 실제 세계의 데이터를 관계라는 개념을 사용해 표현한 데이터 모델입니다.데이터 모델이란 "~~라는 개념을 사용해 데이터를 표현해주세요"라고 정의하

victorydntmd.tistory.com