올해의 목표는 내가 약했던 DB의 지식들을 채우는 데 초점을 두었다. 그렇게 알게 된 책이 '새로 쓴, 대용량 데이터 베이스 솔루션 Vol.1'이라는 책이었다.
지금까지 백엔드 개발을 하면서 Maria DB 또는 NoSQL 외에는 다뤄보지 못했다.
처음에 이 책을 보기 전 제목만 접했을 때는 RDB 개발자들에게 도움이 되는 책으로 생각을 했다. 나는 이 책이 Oracle DB와 관련된 책인 줄 전혀 몰랐다. 그래서인지
처음엔 굉장히 생소했다.
Oracle 전용 용어들만 다루고 있었기 때문에 하루 하루 공부한 내용들을 블로그에 정리하며 '과연 내게 얼마나 도움이 될까?'라는 의심이 들었다.
그럼에도 불구하고 하루 하루 꾸준히 공부하며 정리할수록 내려갈수록 걱정과는 무색하게 공통의 원리가 또렷이 보이기 시작했다.
옵티마이저가 통계로 실행 계획을 고르는 과정, 조인 순서가 처리량을 좌우하는 이유, 그리고 인덱스 분포도가 손익분기점을 결정한다는 사실은 엔진을 가리지 않는 철칙이었다.
'조인 = 순회를 최소화하는 예술'이라는 관점을 얻은 덕분에 이제 실행 계획을 보면 숫자 하나하나가 왜 그런 값을 가졌는지 논리적으로 해석할 수 있게 됐다.
서브쿼리 부분에선 고정관념이 깨졌다. 그동안 IN이나 EXISTS는 느리다는 막연한 편견이 있었지만, 책은 세미조인·안티조인 내부 동작을 보여 주며 오히려 서브쿼리가 중첩 루프보다 효율적일 수 있다는 점을 설득력 있게 설명했다. 덕분에 '조건을 바깥으로 끌어내야만 빠르다'는 습관적 리팩터링을 다시 생각하게 됐다. 또, 스타 스키마에서 차원 테이블 필터를 먼저 적용해 팩트 테이블 범위를 극단적으로 좁히는 아이디어는, 규모가 커질수록 조인 방식보다 '처리 순서를 설계'하는 일이 중요하다는 깨달음을 줬다.
무엇보다 인상적이었던 부분은 '힌트는 임시 처방이고, 근본은 통계와 인덱스 설계'라는 메시지다. 예전엔 옵티마이저가 마음에 들지 않으면 키워드 하나로 강제해 버리는 것이 능력이라 생각했지만, 지금은 통계가 왜 어긋났는지, 분포도가 현실과 얼마나 차이가 나는지부터 의심하게 됐다. 실행 계획이 블랙박스가 아니라 디버그 가능한 대상처럼 느껴진다.
이 책을 읽으며 내게 준 가장 큰 수확은 하나의 엔진 지식이 아니라 '데이터베이스가 효율을 계산하는 사고의 구조'였다. MariaDB만 사용하는 내게도 쿼리 해석의 시야를 확장해 준 고마운 경험이었다.
'이것저것 > 책 후기' 카테고리의 다른 글
| [바미] BTL 테크니컬 리더를 읽고 (0) | 2025.05.05 |
|---|---|
| [바미] 맨먼스 미신을 읽고바미] 맨먼스 미신 : 소프트웨어 공학에 관한 에세이를 읽고 (2) | 2024.11.27 |
| [바미] 클린 아키텍처 소프트웨어 구조와 설계의 원칙 (0) | 2024.07.24 |
| [바미] 책으로 시작하는 부동산 공부 (0) | 2024.07.23 |
| [바미] 왕의 재정 2 (0) | 2024.07.17 |