월요일, 7월 06, 2015

SQL 튜닝이 어려운 이유


SQL 튜닝에 대해 공부를 하거나 실습, 혹은 실제 프로젝트에서 자신이 작성한 SQL문을
튜닝할 때 마음대로 잘 되지 않는 경우가 대부분이다. 그만큼 튜닝이라는 것이 어렵다. 

그렇다고 전혀 정복할 수 없는 분야도 아니다. 하지만 쉽게 접근할 수 있는 분야도 아닌것이 사실이다. 많은 개발자들이 SQL 튜닝을 하고 싶어하고 공부도 하고 실습도 하지만, 원하는 결과를 낼 수 없는 이유가 무엇인지, 철저히 개발자 입장에서 한 번 살펴보자.

1. too much difficult and too little references or books

일반 프로그래밍 언어에 관련해서는 시중에 많은 책들이 나와 있다. 또한 인터넷 상에도 관련 자료가 많다. 이에 비해 SQL 튜닝 관련해서는 상대적으로 자료가 부족하다.

부족하더라도 있는 자료나 책으로 학습하면 문제가 없지만, 튜닝 서적들의 내용이 대체로 어렵다. 튜닝에 관련된 내용을 처음 접하는 개발자 입장에서 볼 때, 친절하면서도 쉽게 설명한 책은 별로 없다. 원래 튜닝이란 것이 어려워서 그런 것인지는 잘 모르겠지만....

2. Too many things to learn

SQL 튜닝이란 것을 한 마디로 말하면, 성능이 나쁜 SQL문을 이러저러한 방법으로 수정해 가장 최선의 성능을 내는 것이다.

 문제는, 최선의 성능을 내도록 SQL문을 변경하기 위해 알아야 할 지식들이 너무 많다는 점이다. 오라클에서 사용하는 데이터 구조, 저장장치와 메모리에서 데이터가 어떻게 처리되는지, 테이블 상의 데이터 분포, 인덱스 유무와 구조, 조인방법, 옵티마이저의 작동 방식, 통계정보, 실행계획, 힌트 등 알아야 할 내용이 너무 많다.

오늘도 불철주야 야근에 시달리면서 별도로 시간을 내어 학습하기에는 머릿속에 넣을 내용이 너무 많다.


3. 그때 그때 결과가 다르다. 

수 많은 우여곡절 끝에 몇 권의 튜닝 서적을 탐독하고 오라클에 관한 지식을 쌓았다고 해보자. 또한 튜닝 책에 나온 예제들도 직접 실행해 그 결과를 확인해 봤고, 왜 그런 결과가 나왔는지도 모두 이해했다고 치자. 

그런데, 현재 몸담은 프로젝트에서 작성한 SQL문에 대해 지금까지 학습한 모든 지식을 동원해 튜닝을 했는데, 성능이 좋아지지 않는다.

예를 들어, 분명히 책에서는 이러저러한 인덱스가 있으므로 Nested Loop 조인을 하고 driving 테이블은 이것으로 조정했더니 기존에 비해 월등히 빨리 수행됐었는데, 동일한 방법을 적용했음에도 불구하고 현실에는 적용되지 않는다.

또한 한 달전에는 튜닝해서 분명히 빠르게 수행됐던 SQL문장이 오늘 부터 느려지는 현상도 비일비재하다. 본인을 비롯해 많은 개발자들이 이 시점에서 튜닝을 포기한다. 똑같은 SQL문을 사용하더라도 데이터 분포, 데이터베이스 구성옵션 등, SQL 실행결과에 영향을 미치는 요소가 너무 많다.

따라서 SQL 튜닝은 어떤 규칙이나 법칙을 암기해 그대로 적용하기 보다는, 현재 실행된 SQL문이 내부적으로 어떻게 수행되는지를 파악하고, 좀 더 효율적으로 빠르게 수행되도록 고칠 수 있는 능력을 길러야 한다.

금요일, 11월 28, 2008

10년 전....

때는 바야흐로 지금으로부터 10년전인 1998년...
대학 4학년이었던 나는 당시 모든 4학년들처럼 도서관에서 토익과 씨름 중...
사실 취업 잘 안되기로 소문난 과에 다니던 나는 취업을 위해 무엇을 해야할 지 알지 못했다.
그냥 남들 다 하는 토익공부...

어느 날 저녁, 기숙사에서 라디오에서 이런 얘기가 나왔다.

사회자: IMF로 인해 대학생들 취업이 어려워 졌습니다. 취업을 앞둔 대학생들에게 한 말씀 해주신다면...?
해설자(일명 취업전문가?) : 사실입니다. 하지만 열심히 노력해서 이 어려움을 극복하고 취업에 성공한다면..한 10년 후쯤에는 "난 그 어렵다는 IMF때 취업했다구.." 라고 자랑할 수 있을 거에요.

정확히 10년이 지났다.
1999년 2월 졸업 후, 지금까지 10여년 사회생활을 했지만....
취업시장이 나아졌다거나 좋아졌다는 소리를 들어본 기억이 없다.

2008년 11월 말,
IMF때야...울 나라 포함..아시아 쪽만 어려웠지만,
이번엔 글로벌 스탠다드의 지존인 미국이 핵폭탄급으로 전 세계의 뒤통수를 날려 버렸다.

여하간....
개인적으로는 요즘 대학생들 참 불쌍하다.
취업 안되는 거야...10년 전이나, 그 후나, 지금이나 마찬가지라고 쳐도...
10년 전에는 등록금은 지금보단 훨씬 쌌다.
지방국립대를 다녔던 본인...지금 생각해보면 돈 별로 안내고 대학 다녔다.
하지만 지금은 국립대도 장난 아니던데...
사립대는...말 하나 마나다.

그렇다면..대학교육의 질이 나아졌을까?
글쎄다.... 10년 전에 졸업한 나로서는 알 수가 없다.
다만....간접적인 경험 하나..
친구중에 대학엘 10년 다닌 애가 있다.
얘가 거쳐간 대학교 정확히 3개, 이 중 2개는 대한민국에서 둘 째 가라면 서러워할 학교..
결국 최종 졸업은 국내 1위의 대학을 졸업하긴 했는데..
얘..졸업하기 전에 몇 번 만났다.

나 : 머 공부하냐? 취업준비 하냐?
친구: 고시공부 하쥐..
나 : 와, 내 친구중에 변호사 하나 나오게 생겼다. 열심히 해라.
친구: 그래...알어따..
나: 그나저나, 니네 학교 댕기는 딴 애덜은 머하냐?
친구: 전공 상관없이 2/3가 고시공부 한다.
나: 정말이냐?
친구: 정말이다.
나: ....

지난 10년간 맘편히 사회생활을 한 적이 없는것 같다.
구조조정이니..권고사직이니...
앞으로 10년간도 머..그렇게 좋아질 것 같진 않다.
나야..어떻게든 10년을 버텼으니, 앞으로 10년도..머 ..
버뜨... 요즘 대학생들... 정말 불쌍하기도 하고..안타깝다...

금요일, 6월 27, 2008

Today's News

일하다가...영어공부 겸 해서...외국의 여러 사이트에 들어가보니...
오늘의 뉴스를 뽑아 본다면...

CNN이나 BBC는 북한 영변 핵 원자로 냉각탑 폭파 뉴스가 메인 페이지에 사진과 함께 눈에 띌 정도로 보이고 있고...
Economist에는 MS를 떠나는 빌 게이츠에 대한 평가...

울 나라의 경우 보수 및 진보 신문사 모두...
쇠고기와 촛불집회 얘기가 차지하고 있음.

북한 문제도 우리나라 입장에서 보면 중요할텐데...이에 관련한 기사는
찾는데 좀 시간이 걸렸음.

수요일, 4월 09, 2008

Revenge Of The Sith

The last series of the Star Wars is Revenge of the Sith, Episode 3. In fact, the original last series of that should be Episode 6, that is the Return Of the jedi, but director of that movie had changed the order of Star Wars because he had not enough skill to make that movie when he'd filmed it, specifically 1987. So the Episode 3 is actually lastest series of Star Wars.

I think that recent situation of korea politics looks like the episode 3.The president election which held in last year and the parliament election which just have heldin are look like the Star Wars episode 3 in many respects.

Why am I saying that?
Maybe.... I wouldn't honestly tell you about that because I don't like to reveal my political review.But I want to know you why I'm saying that. Find it out!
Anyway, for the time being, we could not see not only Jedi knights also emperor who had fallen into a deep hole by the Load Bader.Because there are two episodes between the Revenge of the Sith and the Return of the jedi.

It seems like that I should go away where no one knows for a while.

May the force be with you!!!

일요일, 4월 06, 2008

리더쉽 이야기 [1]

리더쉽이란 무엇일까?
리더란 누구를 말하는 것일까?

그 누구도 명확한 정의를 내리긴 힘들 것 같다.
정의 내리는 사람마다 다들 차이가 있고, 그 누구의 말을 들어도 가슴에 와닿지 않는다.

우리나라에는 리더가 있을까?
아무리 생각해봐도 없다.
대한민국에는 리더는 없지만, 보스는 많다.
보스가 많으니 보스에 대해서는 몇 가지 얘기할 거리가 있다.

보스란 말은 원래 마피아의 대부에서 유래된 것이 아닌 듯 싶다.
한 마디로 절대 충성을 해야만 하는 조직의 최상단에 있는 사람이 보스다.
우리는 보스를 리더라고 부르지는 않는다.

보스는 책임질 일이 생기면 부하에게 떠 맡긴다.
리더는 부하의 잘못에 대해 자신이 책임진다.

보스는 강요하지만,
리더는 솔선수범 한다.

강요해서 말을 안 듣는 부하에게 보스는 철저한 응징을 가한다.
솔선수범하는 리더의 말을 안듣는 부하들은 아마도 다른 부하들에 의해 왕따당할 것이다.

말을 잘 듣는 부하가 있더라도 한 번만 실수하면 보스는 용서하지 않는다.
리더는 여러 번 실수하는 부하의 어깨를 두드려준다.

보스는 자기 부하들이 그러듯이 자신보다 높은 위치의 사람들 눈에 잘 들려고 한다.
리더는 아랫사람에게 잘 보이려 한다.

이렇게 정리해보니...리더가 뭔지 조금 감이 잡히는 것 같다.
결국 내 가정이 맞는 것 같다.

우리나라에는 보스만 있을 뿐, 리더는 없다.

금요일, 4월 04, 2008

남과 여 [1]

여자들은 말한다. 남자들은 여자들 외모만 본다고...

남자들은 말한다. 여자들은 남자들 경제력만 본다고...

여자들은 말한다. 외모만 보는 남자들은 속물이라고...

남자들은 말한다. 경제력만 보는 여자들은 속물이라고...


결국 대한민국 성인 남녀들은 모두 속물인가 보다.

월요일, 3월 31, 2008

당신은 논리적입니까?

살다보면 흔히 논리적이란 말을 많이 한다.
당신은 논리적입니까? 이지적인가요? 논리적으로 설명하세요...등등

개발자와 개발자간의 논쟁, PM이나 설계자와 개발자와의 논쟁,
엔드 유저와 개발자간의 논쟁은 프로젝트 현장에서 흔히 볼 수 있다.
그런데 가만히 둘 사이의 얘기를 듣다 보면, 그 논쟁의 결과가 제대로 끝나는 적이 없다.
대다수의 경우, 한 참동안 큰소리가 오고가지만, 어느 한 사람도 자신의 생각만 고집한 채
상대방의 말을 경청하는 경우는 드물다. 왜일까?

아마도 자신의 생각만이 논리적이라고 생각해서일 것이다.
하지만 여기서 논리적인 오류가 발생한다. 자신의 생각만이 논리적이라는 말은 전혀 논리적이지 않기 때문이다. 그건 아집이며 고집일 가능성이 크기 때문이다.

사실 학창 시절을 되돌아보면, 우리가 논리적 사고, 논리적 글 쓰기, 논리적 행동을 제대로 배워본 적이 있는지 진지하게 질문을 해봐야 한다. 내 경험에 비추어보면, 우리는 논리를 배운적이 없다!!!
수학을 배우지 않았나? 라고 질문해 볼 수 있지만, 수 많은 공식을 외우고 문제 푸는 연습을 했을 뿐 논리란 것은 맛도 보지 못한 것 같다. 그렇다면 논리란 무엇인가?

논리란 객관적인 사실과 법칙을 기준으로 해서 어느 사물이나 현상에 대해 인과관계를 따져 결론을 추출하거나 이미 추출된 결론에 대한 이의를 제기하는 것이 아닐까 생각한다.

요즘 영어로 에세이 쓰는 공부를 하면서 느낀 점은... 영어로 문장을 쓰는 것도 중요하지만, 그 이전에 한국말로도 논리적인 사고와 글쓰기가 잘 되지 않는 것이 더 큰 문제인것 같다. 사실 논리적인 사고를 할 수 있다면, 나머지는 단순 번역이 아니겠는가?