확장메뉴
주요메뉴


소득공제
공유하기

Oracle, PostgreSQL, MySQL Core Architecture 2

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

[ 양장 ] 도서 제본방식 안내이동
첫번째 리뷰어가 되어주세요 | 판매지수 312
베스트
OS/데이터베이스 top100 6주
정가
32,000
판매가
30,400 (5% 할인)
YES포인트
eBook이 출간되면 알려드립니다. eBook 출간 알림 신청
소중한 당신에게 5월의 선물 - 산리오 3단 우산/디즈니 우산 파우치/간식 접시 머그/하트 이중 머그컵
월간 개발자 2022년 5월호
내일은 개발자! 코딩테스트 대비 도서전
5월 전사
5월 쇼핑혜택
1 2 3 4 5

품목정보

품목정보
출간일 2017년 08월 25일
쪽수, 무게, 크기 319쪽 | 190*265*30mm
ISBN13 9791188427017
ISBN10 1188427016

책소개 책소개 보이기/감추기

이 책의 시작은 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와의 비교연구 또한 계속 이어질 것이다.

목차 목차 보이기/감추기

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. 표그림 리스트

저자 소개 관련자료 보이기/감추기

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

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

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

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

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

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

출판사 리뷰 출판사 리뷰 보이기/감추기

최근 국가사회 전 분야의 새로운 비전으로 제4차 산업혁명이 제시되고 있는데 그 핵심 키워드는 바로 "데이터"이다. 4차산업의 키워드인 "데이터"에 대한 특별한 관심은 최초로 1960년대 GE의 찰스 바크만에 의해서 이뤄졌다. 찰스 바크만은 프로그램 로직 별도로 "데이터"를 특별히 분리하여 저장해야 된다는 아이디어를 제시했고 이는 DBMS 탄생으로 이어졌다. 이후 DBMS는 IBM, Oracle, Sybase, MS 등 미국의 IT 기업이 중심이 되어 발전하여 왔고 엔터프라이즈 IT 환경에서 OS와 더불어 가장 중요한 위치를 차지하는 핵심 소프트웨어가 되었다. 아시아와 유럽의 여러 나라들은 국가적 과제로 DBMS 개발을 시도한 바 있으나 큰 성공을 거두지는 못했다. 더 나아가 최근에는 데이터의 폭발적 증가와 다양화로 기존 RDBMS 중심에서 벗어나서 NoSQL, Hadoop, 블록체인 등 새롭고 다양한 데이터 저장 플랫폼이 나타나고 있다.

그러나 새로운 데이터 활용 상황에 맞게 변용되는 다양한 데이터 저장 플랫폼의 아키텍처의 기본 구조에는 RDBMS의 아키텍처가 깔려있다. 그러므로 여전히 RDBMS의 내부구조에 대한 이해는 필수적이라고 할 수 있다. 더군다나 오픈소스 DBMS가 엔터프라이즈 환경에도 점차 적용되는 요즘에 기존 유명 벤더의 RDBMS와의 구조적 차이를 이해한다는 것은 필수적이라고 할 수 있다.

이제 삼성에서 DBA와 TA로서 근무하던 후배들이 Oracle과 PostgreSQL, MySQL의 인터널 구조를 비교연구하여 세상에 내놓는다는 소식을 들으니 지금 이 시점에 꼭 필요한 책이라는 생각이 든다. 지금까지의 DBMS에 관한 책은 대부분의 활용적인 측면에서만 접근했고 각 DBMS의 내부구조에 대한 비교연구는 부족했었다. 독자들은 이 책을 통하여 오픈소스 DBMS에 대한 이해를 깊게 할 수 있고, 또한 RDBMS의 내부 구조에 대한 깊은 통찰을 얻게 될 것이다. 앞으로도 후배들이 더 좋은 연구로 한국 DBMS 발전에 큰 기여를 하길 바라며 추천의 글을 마무리한다.
삼성 S-Core 대표이사 한인철


IT 관련 콘텐츠 연구로 국내 IT회사들의 모범이 되고 있는 엑셈에서 이번에 Oracle과 PostgreSQL, MySQL의 메모리 인터널 구조를 비교연구서를 출간하며 추천의 글을 부탁하기에 기쁜 마음으로 펜을 들어본다.

엑셈은 창사이래 지속적으로 IT 관련 전문서적을 출판하여 다른 IT 기업들의 찬사와 부러움을 받아왔다. 엑셈의 이러한 지식기업화 전략은 오늘의 엑셈을 있게 한 주요 성공 요인이라고 생각한다.

한국의 DBA들은 데이터베이스를 공부할 때 엑셈의 서적으로 공부하고 있으며 지금도 DBA들의 자리에 가보면 대부분 엑셈의 서적이 책상위에 놓여져 있다. 엑셈은 엔지니어들의 성장을 지원하며 그 결과물인 IT 전문서적을 지속적으로 세상에 보여왔다. 엑셈은 그렇게 한국 IT 발전에 큰 기여를 해왔고, 이는 곧 엑셈의 회사성장으로 이어지는 선순환을 그려오고 있는 것이다. 본인은 그동안 이러한 엑셈의 콘텐츠 생산을 지켜보며 저자들의 노력 못지않게 이 선순환을 신념으로 지속시킨 엑셈의 조종암 사장님에게 경의를 표하고 싶다.

최근 NoSQL, Hadoop, BlockChain 등 새로운 데이터 저장 기술이 각광을 받고 있지만 여전히 RDBMS의 내부 메커니즘은 여전히 DBA가 반드시 이해해야 하는 가장 중요한 기술이다. 그러나 지금까지 발간된 DBMS에 관한 책은 활용적인 측면에서만 주로 다뤄왔고 DBMS의 내부구조에 대한 비교연구는 매우 부족했었다. 이번에 엑셈에서 출간하는 메모리 인터널 구조에 대한 비교연구는 DBMS 내부구조에 대한 이해를 갈구했던 많은 DBA들에게 조금이나마 답을 줄 수 있을 것으로 기대하며 관심있는 한국의 DB 엔지니어들에게 일독을 권하고 싶다.
선재소프트 대표이사 김기완


현재 기업의 다양한 비즈니스 니즈에 맞춰 많은 트랜잭션이 발생하므로 데이터 증가량이 폭발적으로 증가하고 있다. IT 기술이 발달하면서 서버 및 데이터베이스의 성능은 발전했지만 빠른 데이터의 증가에 의한 이슈는 다양하게 나타나고 있으며, 발생 빈도도 증가되고 있다. 서비스 기대수준이 높은 고객에게 데이터베이스 서버의 최적화 방안을 제시하기 위해서는 시스템과 데이터베이스 아키텍처를 정확하게 이해하고 있어야 한다.

이와 관련한 문제점의 실마리와 원인을 찾아가는 과정에 지난번 출판되었던 "트랜잭션처리 Internal의 Core Architecture", 그리고 이번에 출판되는 "Memory Internal의 Core Architecture Ⅱ" 는 많은 도움을 줄 것이다. 데이터베이스 아키텍처를 이해하고 원리를 정확하게 아는 것은 서비스 안정화를 바라는 고객에게 데이터베이스에 대한 최적화를 제공해줄 수 있다. 데이터베이스에 대한 새로운 접근방법의 길라잡이가 되어주길 기원합니다.
한국후지쯔㈜ 정승환
  •  쿠폰은 결제 시 적용해 주세요.
1   30,400
뒤로 앞으로 맨위로 aniAlarm