[박찬권의 ‘SQL 튜닝공부 한번 해보실래요?’]
연재를 시작하면서
개발자로서 끝없는 도전을 하고 계시는 여러분, 수고가 많습니다. 늦었지만 새해 복 많이 받으세요. 새해 다짐과 계획 잘 세우셨나요. 혹시라도 ‘올해 꼭 하나 더 해야 할 일을 놓고 고민중’이시라면, SQL 튜닝에 한번 도전해보시는 거 어떠세요? SQLGATE 뉴스레터 제1호에서 여러분께 믿을 만한 SQL 튜닝 공부 도우미 한 분을 소개합니다.
최근 [오라클 튜닝 에센셜: DBMS_XPLAN으로 실행계획 뽀개기]를 내놓은 박찬권 저자인데요. 박 저자는 현업 튜너이자 강사로 활발하게 활동하고 있습니다. 저자가 현장 감각과 이론을 결합하여 SQL 튜닝이 무엇인지와 그 공부 방법을 몇 회에 걸쳐 소개합니다. 여러분의 많은 참여와 관심을 부탁드립니다.
이번 첫 연재에서는 필자의 SQL 튜닝 도전기와 SQL 튜닝이라는 장벽을 넘어가는 방법을 소개하고자 합니다. ‘시작이 반’이라는 말처럼 어떤 일이든 새로 시작할 때는 굳은 각오가 필요하지요. ‘멀리서 보면 빽빽한 숲도 가까이 다가가 보면 빈틈이 많은 것처럼, 처음에는 엄두가 나지 않더라도 가까이 가볼 수 있는 용기가 우선입니다. 가까이 가보면 방법이 보이게 마련입니다. 겨누지만 않고 SQL 튜닝이라는 표적을 향해 화살을 당겼던 필자가, 2020년 여러분의 신실한 도전 가이드가 되어드릴 것입니다.
제 1회: 일단 SQL 튜닝에 가까이 다가가 보세요!
안녕하세요. 프리랜서로 활동하는 튜너 박찬권입니다.
더 잘해보고 싶다!
저는 개발자로 사회 생활을 시작하여 우연히 DB와 인연을 맺어 튜너로 활동하고 있습니다. 지난 2013년, SSG.COM 프로젝트에서 DB 기술 전문업체가 있다는 것을 처음 알게 됐습니다. 그 전에는 DB 기술 업체들이 있는지조차 몰랐습니다. DB 전문회사에 들어가려면 어떻게 하면 되는지 궁금했지요. 혹시나 하는 마음으로 회사 입사요강을 살펴보다가 SQLP라는 자격증을 알게 되었습니다. 나름 튜닝을 좀 해봤다고 여겨 쉽게 생각했는데 무려 세 번이나 떨어졌습니다. 2014년에 간신히 SQLP 자격증을 땄습니다.
조금 의아해할 수 있겠지만, SQLP를 도전하면서 [SQL 전문가 가이드]는 별로 보지 않았습니다. 시험 합격이 목표라기보다 제가 아는 지식으로 시험에 합격해야 한다는, 자격증 취득만을 놓고 보면 다소 답답한 생각 때문에 그랬습니다. 해당 분야를 공부하기 위해 IT 자격증 취득에 도전했던 경우죠.
자격증을 먼저 따 놓고 나중에 공부하려면, 의지력이 매우 높아야 할 거라고 생각합니다. 자격증만 먼저 따게 되면, 아무래도 나태해질 가능성이 높기 때문이죠. ‘이 자격증을 이미 갖고 있는데!’하는 생각이 들 수밖에 없지 않을까요.
SQL 튜닝 공부를 처음 시작했을 때, 어디서부터 해야 할지 고민했던 기억이 나는데요. 저와 비슷한 고민을 하는 사람들과 나누고 싶다는 생각으로 [오라클 튜닝 에센셜: DBMS_XPLAN으로 실행계획 뽀개기]라는 책까지 쓰게 되었습니다. 이 연재는 이 책에서 소개했던 내용을 토대로 엮어갈 계획입니다. 그 첫 회로서 ‘개발자가 어떻게 SQL 튜닝에 가까이 갈 수 있을까?’라는 주제로 여러분께 인사를 드리고자 합니다.
프로젝트 현장에서 일하다 보면, 정말 시간 내기가 어렵죠. 주어진 일을 처리하기도 벅찬데 새로운 공부까지 하겠다는 것은 말처럼 쉽지 않습니다. 그럼에도 개발자라면 누구나 ‘더 잘해보고 싶다’는 열정이 있습니다. 그 작은 바람을 실현하려면, 일단 시작하여 포기하지 않으면 어떻게든 된다는 경험을 하였습니다. [오라클 튜닝 에센셜] 집필도 그런 다짐으로 시작했고, 중간에 포기하지 않도록 응원하는 마음을 담았습니다.
이해될 때까지 책 사보기
DB를 공부할 때 책을 많이 참고했던 기억입니다. 이해가 될 때까지 계속해서 읽기를 반복했습니다. 책에서 소개한 상황을 PC에 구현해 직접 확인하면서 해보았습니다. 예를 들어, 인덱스 영역이 이해되지 않으면 처음엔 같은 책을 반복하여 읽으면서 이해도를 높이고, 그런 다음에는 인덱스를 설명해 놓은 이 책 저 책을 계속 보면서 다양한 관점으로 이해할 수 있도록 공부했습니다. 그러다 보니 새로운 뭔가를 받아들이기까지는 일반적으로 다른 사람에 비해 더 많은 시간이 걸렸지요.
이것은 학창 시절의 공부 습성이기도 합니다. 새로운 수학 공식을 접하면, 꼭 증명을 해보곤 했습니다. 공식이 만들어진 과정이 반드시 이해가 되어야 다음으로 넘어갔습니다. 그러고 나서야 받아들일 수 있었지요. 그 과정을 거치고 나면 술술 풀리기 시작했고, 그때부터 속도는 느리지 않았고요.
데이터로 직접 실습해 보면서 몸으로 느끼기
꼭 튜너가 아니더라도 튜닝은 자신을 돋보이게 할 수 있는 매력적인 기술입니다. 대부분의 IT 분야가 그렇다 할 수 있지만, 튜닝은 할 줄 아는 사람이 하면 한두 시간이면 할 수 있지만 모르는 사람은 밤을 새도 못하는 경우가 허다합니다. 고등학교 과목과 비교한다면 수학과 비슷하다고 볼 수 있습니다.
수학 공식 몇 개 암기해서 문제를 푼다 해도 시험에 나왔을 때도 쉽게 풀 수 있을까요? 튜닝을 공부할 때 개념을 잘 이해하고 활용할 수 있어야 합니다. 네이버 카페에 실습을 위한 스크립트가 있습니다. 1MB도 안되는 스크립트를 실행하면 수천만 건의 데이터가 생성됩니다. 개념을 잘 이해한 잘 이해했는지 확인을 위해 사용해 보시기 바랍니다. 해당 스크립트의 실행 방법 및 활용에 대해서는 앞서 소개한 [오라클 튜닝 에센셜]에 자세히 소개해 놨습니다.
자, 이제 그러면 오라클 이야기를 시작하겠습니다
지금까지 오라클을 사용할 때 SQL을 어떻 게 작성하였나요? SELECT, FROM, WHERE 등의 키워드를 먼저 익히고, 책이나 인터넷에 있는 몇몇 함수를 따라서 실행하는 방식으로 공부하지 않았나요?
그런 상태로 원하는 결과를 얻기 위하여 프로젝트 현장에서 별 고민 없이 스크립트를 만들어 실행해 봅니다. SQL을 만들어 실행해 보고 결과를 확인한 다음, 원하는 결과가 아니면 조금 수정해서 실행하기를 반복하다가 결과가 예상과 맞으면 ‘아 이제 됐다’ 하면서 넘어가지 않았나요? 개발 초기에 대량의 데이터가 없을 때는 어떻게든 SQL을 완성하기만 하면 별 문제가 없습니다.
해야 할 업무가 많은 프로젝트 현장에서 오라클 아키텍처나 SQL 동작원리를 이해할 만큼의 시간을 내기 힘든 게 현실입니다. IT의 여러 분야에 나타나는 현상 중 ‘제발 되기만 해라’ 내지는 ‘(확실하게는 모르겠지만) 이렇게 하면 되는구나’라는 식으로 대충 넘어가거나, 상황을 외우려는 현상 이 많아 보입니다. 이미 알고 있겠지만 이렇게 해서는 실력을 높이기 어렵습니다.
얼마나 알아야 할까요?
다음 그림을 한번 보죠.
그림 1. 오라클 11g 아키텍처(출처: 오라클 홈페이지)
오라클 공부를 이제 시작하는 분들에게 [그림 1]을 보여주고, “여러분, 위 그림이 오라클 아키텍처입니다. 하나하나가 무엇을 의미하고 어떤 역할을 하는지 공부하세요”라고 한다면 대부분 바로 포기하거나 조금 공부하다가 지치고 말 것입니다.
간혹 매우 열심히 노력하여 [그림 1] 아키텍처를 다 공부하는 사람도 있겠죠. 하지만 어떤 내용이 더 중요하고, 어떤 내용이 덜 중요한지는 이해하기 힘들 것입니다. 핵심이 되는 아키텍처를 먼저 익히고, 오라클의 동작을 이해하는 데 조금은 덜 중요한(?) 아키텍처를 채워가는 식으로 접근한다면 [그림 1]도 어느 순간에는 쉽게 다가올 수 있을 것입니다. 우선 제가 생각하는 오라클 아키텍처의 핵심은 다음 [그림 2]와 같습니다.
그림 2. 오라클 핵심 아키텍처
어떻습니까? 처음 보았던 [그림 1]보다는 좀 시시해 보일 수도 있습니다. 또한 그렇게 멋있지도 않고요. 하지만 [그림 2]가 오라클을 이해하기 위한 가장 핵심 내용이라면 어떻습니까? 이 정도라면 한번 도전해 볼 만하다는 생각이 들지 않나요?
용기가 났다면 위 그림에 나온 용어들을 하나씩 살펴보면서 공부를 시작할 수 있습니다. 벽돌공이 자신이 쌓고 있는 벽돌 한 장이 나중에 어떤 모습을 띌지를 알고 쌓는 것과 그냥 주어진 일이라서 하는 것과는 차이가 크다는 일화를 알고 계시죠.
여러분, [그림 2]에 나온 각종 용어들을 왜 공부해야 하는지는 여러분께서 직접 한번 찾아보시기 바랍니다. 물론 이걸 왜 공부해야 하는지 쉽게 설명해 놓은 내용도 있습니다. [오라클 튜닝 에센셜]이 바로 그것입니다.
얼마나 모르고 있는지를 깨닫는 과정
우연히 나이 50을 앞둔 한 개발자가 SQLP와 DAP 시험공부 이후 달라진 것을 소개해 놓은 글을 보았습니다. 자신이 ‘성능을 염두에 두지 않고 SQL문을 얼마나 마구 썼는지 알게 됐고, 규칙에 따라 작성하면서 놀라보게 개발 결과물이 좋아졌다’는 게 요지였습니다.
‘공부는 내가 얼마나 모르고 있는지를 깨닫는 과정’이라는 말처럼, 개발자로서 더 성장하기 위한 다양한 방법이 있습니다. 그 중 하나가 바로 ‘SQL 튜닝’이라고 봅니다. 그 과정에서 자연스럽게 달라진 자신의 모습을 발견하면서 새로운 기회도 만나게 될 거라고 확신합니다.
저는 요즘 튜너이자 강사로도 활동하고 있습니다. 참여하는 거의 모든 개발 프로젝트에서 개발자 대상으로 SQL 작성 교육과 튜닝 교육을 하고 있습니다. 꼭 튜너로 참여한 프로젝트가 아니어도 프로젝트 막바지에 응답시간이 느린 SQL문을 선별해 튜닝을 해드리곤 합니다. 이런 과정을 거쳐 현업 고객과 담당자들로부터 점점 튜닝 전문가로서 인정을 받을 수 있었습니다. 뭐든 직접 해보는 것만큼 좋은 방법은 없습니다. 그 경험이 SQLD 자격증 대비 대학 특강과 일반인 대상의 튜닝 강의를 하는 밑바탕이 됐습니다. 자연스럽게 올라간 자신감은 프로젝트를 대하는 태도도 바꿔 놓더군요.
잘 알고 계시겠지만, 누구나 살아가면서 수많은 어려움을 만나고 또 극복해 나갑니다. 여러분도 충분히 하실 수 있으리라고 봅니다. 포기하지 않으면 할 수 있다는 것을 저는 느꼈습니다. 조금씩 천천히 꾸준하게 정진한다면 누구나 원하는 만큼을 얻을 수 있다고 믿습니다.
‘SQL 튜닝공부 한번 해보실래요’ 첫 연재를 어떻게 보셨나요? 마음이 조금이라도 움직였다면, 여러분 안내 SQL 튜닝 실력이 뛰쳐나오려고 꿈틀대는 증상이지 않을지요^^ 다음 연재에서는 ‘튜닝을 위한 기본기 다지기: 오라클 아키텍처에 쉽게 접근하는 방법’이라는 주제로 [그림 2]의 내용을 풀어보도록 하겠습니다. 다음 회에 뵙겠습니다. 감사합니다.
-다음회에서 계속됩니다.-
미니 이벤트
[오라클 튜닝 에센셜: DBMS_XPLAN으로 실행계획 뽀개기] 서평단 모집
박찬권 저자가 쓴 [오라클 튜닝 에센셜:DBMS_XPLAN으로 실행계획 뽀개기] 리뷰 해보실래요?
SQL 튜닝이 낯선 개발자와 입문자를 위한 책입니다.
5000만 건이 넘는 실습용 데이터와 함께 튜닝 공부를 즐겁게 하실 수 있도록 안내해 드릴 것입니다.
참, 글 쓰는 것이 부담스러우시다고요. 괜찮습니다. 진심이 담긴 나만의 느낌이 있는 글이 더 좋습니다.
■ 참가 방법
- 신청 기간: ~ 1월 30일(목)까지
- 모집 인원: 5명
- 신청 방법: [서평 이벤트 신청합니다]로 연락 받으실 이메일 주소를 아래 댓글에 남기시면 됩니다.
신청자 중에서 5명 선정해 연락 드립니다.
- 발표: 1월 30일(목) 오후 2시 이후에 댓글로 선정자 공지 및 남겨 주신 이메일로 개별 통보 예정이며,
선정되신 분들께는 서평용 책 한 권씩을 발송해 드립니다.
- 서평 남기는 방법: 참가자 자신의 블로그 등 SNS나 인터넷 서점에 작성하신 후 해당 링크를 메일
(friend@mustree.com)로 전송해 주시면 끝납니다. 책 수령일로부터 2주 이내에 서평 작성을 부탁드립니다.
- 문의: 글봄크리에이티브(friend@mustree.com)
댓글
댓글 8개
seamoon23@gmail.com / 서평이벤트 신청합니다 / 이렇게 하는게 맞나 모르겠네유.
mydreams@kakao.com 서평 이벤트 신청합니다.
ezdrum@kinac.re.kr [서평 이벤트 신청합니다.] 감사합니다.
sw1893@naver.com 서평이벤트 신청합니다
soobongpark@naver.com 서평이벤트 신청합니다.
jihuny85@gmail.com 서평 이벤트 신청합니다.
iris422@naver.com 서평 이벤트 신청합니다. 너무 늦었으려나요????
안녕하세요.
SQLGate 고객지원팀입니다.
우선 서평이벤트에 참가해 주신 모든 분들께 진심으로 감사드립니다.
이벤트 당첨자 분들께는 별도로 안내 메일을 발송 예정입니다.
해당 메일을 통해 주소와 연락처를 알려주시면, 출판사에서 서평용 책을 보내드릴 것입니다.
서평 올리기 방법 등에 대해서도 출판사에서 이메일로 안내 해드릴 계획입니다.
다시 한 번 서평이벤트에 참여해 주셔서 감사드리며,
2020년에도 SQLGate에 대한 변함없는 관심과 애정 부탁드립니다.
고맙습니다.
댓글을 남기려면 로그인하세요.