Oracle, PostgreSQL, MySQL Core Architecture 2

Memory Architecture의 내부 동작 원리를 중심으로

권건우, 이근오, 김숙진, 이대덕, 홍성덕, 안성현 공저 | 엑셈 | 2023년 11월 06일 | PDF

이용가능환경 : Windows/Android/iOS 구매 후, PC, 스마트폰, 태블릿PC에서 파일 용량 제한없이 다운로드 및 열람이 가능합니다.

구매

종이책 정가 32,000원

전자책 정가 22,400원

판매가 22,400원

도서소개

이 책의 시작은 10여 년 전으로 거슬러 올라간다. Oracle의 Library Cache에 대한 깊은 이해는 현장에서 금융시스템을 운영하고 튜닝하는 DBA로서 필수적임에도 불구하고 그동안 Oracle에 관련된 어떠한 책에서도 명쾌하게 설명하지 않았다. OWI event를 중심으로 Library Cache에 아키텍처를 추론하여 짐작하였을 뿐, 명확하게 구조적으로 설명된 자료는 없었다. 명확한 구조를 모른다는 것은 정확한 솔루션을 제시하지 못한다는 것이다. 국내의 서적 뿐만 아니라 해외의 유명한 구루들의 서적에서도 마찬가지였다.

예를 들면, enq lock은 holder session과 waiter session 단 2개로 locking 상황을 재현하면서 비교적 명쾌하게 설명이 가능했으나 Library Cache에서는 수많은 세션을 동시에 실행시켜서 부하 테스트 방법으로 비슷한 상황을 재현할 수 있을 뿐 enq처럼 명확하게 설명되지 못했다. 현장의 많은 DBA들은 정확한 이유도 모른 체 flush 명령을 내리거나, 세션을 kill 시키고 sql의 hard parsing을 줄이기 위한 bind variable을 쓸 뿐 정확한 메커니즘에 대한 이해가 부족했다. 필자 역시 후배와 수많은 Library Cache 덤프를 떠보고 국내외 유명 서적을 탐독했으나 그 내부구조에 대한 원리를 명확히 이해할 수 없어서 답답하기만 하였다.

그런 답답함이 이번 연구를 통하여 많이 해소되었다. Oracle 내부를 탐험하며 구석구석 사진을 찍고, 그 동작 원리를 이해하는 것은 하나의 예술작품을 보는 것과 같았다. 그러나 이만큼의 성과가 나올 수 있었던 것은 10여년 전 Library Cache의 정확한 메커니즘을 파헤치기 위해서 저자와 함께 수개월간 Library Cache 덤프를 수천 번 수행하고 분석했었던 기초 자료가 있었기에 가능했고 그 작업을 함께 했었던 이인규 책임에게 감사의 마음을 전하고 싶다.

지난 1권에서는 트랜잭션 처리와 관련된 메커니즘을 세 개의 주요 DBMS를 대상으로 비교 연구하였고, 이번 2권에서는 Buffer Cache를 비롯한 Shared Memory 메커니즘을 비교 연구하였다. 다음 3권에서는 아직 다루지 못했던 PGA를 비롯한 기타 아키텍처를 추가적으로 연구하고 그동안 연구해온 깊은 아키텍처의 이해를 바탕으로 현장에서 발생하는 다양한 성능저하 케이스, 에러 케이스 등의 원리를 명확하게 연구해 보려고 한다. 또한 앞서 말했던 하둡을 비롯한 최근의 다양한 데이터 저장플랫폼과 그동안 연구했던 RDBMS와의 비교연구 또한 계속 이어질 것이다.

저자소개

[ 권건우 ]
삼성SDS에서 DBA, Technical Architect로 다수의 차세대 시스템을 구축했으며 현재는 ㈜엑셈에서 글로벌마케팅팀 및 연구콘텐츠팀을 리딩하고 있다.

[ 이근오 ]
삼성카드, 삼성생명, ING 생명 등 다수의 금융차세대 프로젝트에 참여했으며 현재는 ㈜엑셈에서 연구콘텐츠팀에서 DBMS 연구 및 강의를 담당하고 있다.

[ 김숙진 ]
㈜엑셈의 연구콘텐츠팀에서 Oracle, MySQL, PostgreSQL DBMS에 대한 연구를 진행하고 있으며 엑셈의 Deep Internal 세미나 시리즈 강의를 진행하고 있다.

[ 이대덕 ]
㈜엑셈의 연구콘텐츠팀에서 Oracle, MySQL, PostgreSQL DBMS에 대한 연구를 진행하고 있으며 엑셈의 Deep Internal 세미나 시리즈 강의를 진행하고 있다.

[ 홍성덕 ]
㈜엑셈의 글로벌마케팅본부에서 작문과 사진, 컨텐츠 편집을 담당하고 있으며 편집 및 IT 스토리텔러를 꿈꾸고 있다.

[ 안성현 ]
㈜엑셈의 SaaS팀에서 에이전트 개발과 Docker를 이용한 테스트 환경 관리를 담당하고 있으며, 개발 전문가로 거듭나기 위해 엑셈에서 다양한 경험과 지식을 쌓고 있다.

목차소개

1. RDBMS의 메모리 아키텍처
1.1. DBMS 아키텍처의 발전 30
톰 길번과 가상메모리 그리고 페이징 30
찰스 바크만과 DBMS의 탄생 30
IBM System/360과 ISAM 31
번 와츠와 IMS/DB 31
E. F. Codd 박사의 RDBMS 논문과 System R 프로젝트 32
마이클 스톤브레이커와 Ingres 프로젝트 33
RDBMS를 완성한 시대의 천재 밥 마이너 33
밥 엡스타인과 Sybase DB 33
오픈소스 DBMS의 시대 34
컬럼 스토어 DBMS 34
RDBMS의 전성기와 새로운 도전 35
NoSQL의 등장 35
분산 처리와 하둡 36
분산 원장 DBMS인 블록체인 36
1.2. 가상 메모리와 페이징 38
페이징의 필요성 38
가상 메모리 39
페이지 교체 알고리즘 42
1.3. DBMS의 Buffer Management 52
Buffer manager의 개념 52
첫 번째 흐름 LRU Buffer Replacement Algorithm 54
두 번째 흐름 Clock Buffer Replacement Algoithm 56
1.4. DBMS 메모리 아키텍처의 비교57
해시 함수의 Input Parameter와 버킷서치 알고리즘 58
버퍼 교체 알고리즘 66
버퍼 리스트 관리 66
멀티플 버퍼 풀 68
리두 로그 메커니즘 70
리두 로그의 식별자 메커니즘 72
멀티플 로그 버퍼 72
SQL 공유 메커니즘 72
Insert문 성능향상 메커니즘 73
트랜잭션 상태보관 메커니즘 74

2. Oracle의 메모리 아키텍처
2.1. SGA(System Global Area) 개요 78
IPC(Inter-Process Communication) 80
Granule 83
Shared Pool 87
2.2. Library Cache 95
Library Cache 구조 95
Library Cache의 동작 104
2.3. Buffer Cache 127
Buffer Cache의 구조 127
Buffer Cache의 동작 147
2.4. Redo Log Buffer Cache 155
Redo Log Buffer Cache의 구조 155
Redo Log Buffer Cache의 동작 169

3. PostgreSQL의 메모리 아키텍처
3.1. Shared Buffers 183
Hash Table 186
해시 함수의 Input Parameter와 버킷서치 알고리즘 194
Buffer Pool 197
Clock Sweep 알고리즘 204
Disk Read 시나리오 209
3.2. WAL Buffers 222
WAL Segment File의 구조 222
pg_xlogdump 229
3.3. CLog Buffers 238

4. MySQL의 메모리 아키텍처
4.1. MySQL 아키텍처 244
InnoDB Overview 244
Storage Engine Overview 245
Shared Memory Overview 246
4.2. Buffer Pool 247
Buffer Pool Routines 247
Buffer Pool Instance 247
Buffer Pool의 전반적 구조 249
Buffer Pool의 주요 구조체 251
해시 함수의 Input Parameter와 버킷서치 알고리즘 265
Disk Read 시나리오 267
Insert Buffer 283
4.3. Redo Log 286
Redo Log Buffer 286
Redo Log File 287
Redo Logging Process 293
Log_sys 294
4.4. Doublewrite Buffer 295

5. 레퍼런스

6. 표그림 리스트

회원리뷰 (0)

현재 회원리뷰가 없습니다.

첫 번째 리뷰를 남겨주세요!