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