데이터베이스 엔진 아키텍처
전형적인 데이터베이스의 아키텍처 ( SQL Server 아키텍처도 포함 )
1. 사용자가 쿼리를 요청하면, 쿼리 최적화기(Query Optimizer)가 요청을 받아 효율적인 수행 계획을 수립합니다.
2. 실행 계획을 수립하면 관계 연산자(Relational Operator)가 질의를 단계적으로 수행합니다.
3. 질의가 수행되는 각각의 절차에서, 파일 관리자(File Manager)는 파일 내의 페이지를 추적/감시하고 페이지의 정보를 조직합니다.
4. 파일 매니저가 조직한 페이지 정보를 필요에 따라 메모리로 가져옵니다.
5. 디스크 매니저(Disk Manager)는 페이지를 할당하고 반납하며, 디스크에 기록하는 작업을 수행합니다.
SQL Server 의 계층 아키텍처
계층 | 설명 |
프로토콜 계층 | 네트워크 상에서 요청을 전송받고 결과를 반환 |
쿼리 프로세서 계층 | 요청을 전달받아 쿼리를 파싱하고 최적화하며 수행 |
스토리지 엔진 계층 | 트랜잭션 서비스, 잠금, 파일 관리, 버퍼 관리 등을 담당 |
SQLOS 계층 | SQL Server 내부에서 메모리, I/O, 잠금 등 데이터베이스 운영의 실제 작업을 담당 |
SQL Server 의 엔진 동작 절차
1. 외부에서 SQL Server 로의 요청은 네트워크를 통해 이루어 집니다.
TCP/IP, Named pipe, Shared Memory 등의 SQL Server 지원하는 프로토콜을 사용하여 요청을 전달 받아 쿼리 컴파일 및 실행 엔진으로 전달합니다.
2. 쿼리 엔진에서 쿼리를 파싱하고 쿼리의 문법과 현재 사용자의 요청에 대한 개체 접근 권한을 검사하고 쿼리를 실행합니다.
3. 저장소 엔진은 실제적인 쿼리의 수행을 담당합니다.
- 버퍼 관리자(Buffer Manager): 메모리에 접근하여 데이터 페이징을 담당
- 파일 관리자(File Manager): 디스크의 파일 시스템에 액세스해서 데이터를 저장하거나 패치
- 잠금 관리자(Lock Manager): 여러 사용자에 대한 각 데이터의 잠금을 수행
- 접근 방법 관리자(Access Methods Manager): 인덱스, 페이지 관리 등을 수행
4. 저장소 엔진은 SQLOS 와 연결하여 작업을 병행합니다.
SQLOS 는 여러 개의 스레드로 동작하며, 데이터베이스 엔진 내부에서 데드락을 모니터링하고, 리소스 상태를 감시하며, 병행 처리 되는 프로세스와 스레드의 스케줄링을 감시하고, 예외처리 등의 역할을 수행합니다.
SQL Server 데이터 저장소 구조
SQL Server 의 데이터 저장소는 크게 4가지로 볼 수 있습니다.
단위 |
설명 |
페이지 |
데이터를 이루는 기본 단위이며, 페이지를 단위로 디스크와 메모리 사이에 데이터를 입출력 |
익스텐트 |
8개의 페이지가 모여 하나의 익스텐트가 되며, 데이터베이스 공간 관리의 기본 단위 |
파일 |
여러개의 익스텐트가 모여 하나의 파일 |
데이터베이스 |
하나의 주 데이터 파일(mdf)과 다수의 보조 데이터 파일(ndf) 다수의 로그 파일(ldf)로 구성 |
데이터를 저장하기 위해 사용되는 자료 구조는 B-Tree 와 Heap 입니다.
클러스터 인덱스가 구성된 테이블과 인덱스는 B-Tree 구조이며,
클러스터 인덱스가 구성되지 않은 테이블은 Heap 구조입니다. ( 이 구성에서 인덱스인 경우는 B-Tree 구조 입니다. )
메모리 아키텍처
실행 코드와 메모리 풀, 두 부분으로 나뉘어 질 수 있습니다.
실행 코드 영역에는 SQL Server 의 동작을 위한 서버 코드, 라이브 러리 등이 로드되며,
메모리 풀 영역에는 데이터 요청을 처리하기 위한 캐시와 버퍼 공간이 존재합니다.
포스팅에 사용된 사진은 SQL Server 2012 Operation Perfect Guide 에서 가져왔습니다.
혹시 저작권에 문제되는 경우 말씀 주시면 바로 삭제하도록 하겠습니다.
'SQL Server > SQL Server 기타' 카테고리의 다른 글
[MSSQL] OPENROWSET, OPENDATASOURCE, OPENQUERY 와 Linked Server 성능, 장단점, 원격 접속 방법 (0) | 2019.05.22 |
---|---|
[MSSQL] SQL Server 멀티 인스턴스 구조 (3) | 2019.05.21 |
[MSSQL] CROSS APPLY 와 OUTER APPLY 그리고 JOIN 의 차이점 (0) | 2019.04.17 |
[MSSQL] REVOKE 와 DENY 의 차이점 (0) | 2019.04.03 |
[MSSQL] COLLATE 데이터 정렬. Korean_Wansung_CI_AS 및 각 옵션에 대한 설명 (0) | 2019.04.03 |