SQL 튜닝을 시작하며...
SQL은 RDBMS의 데이터를 관리하기 위하여 특수 하게 프로그래밍 한 언어이다. 구조화 질의어 (Structured Query Language) 라고하는데, 그냥 나는 조금 쉽게 아무 말이나 하는게 아니라 육하원칙에 의거하여 물어보는 것이다? 정도로 이해했다. 예를 들면 재판장에서 검사나 변호사가 증인을 심문하는 과정이랄까?...
뭐 아무튼 논리적인 사고를 통해 어떤 질문을 할 것인지 정하고 실제로 그 논리적인 사고를 바탕으로 내 입을 통해 물리적인 질문을 하게 된다. 이걸 SQL로 치면 어떤 질문을 할 것인지 정하는 과정 자체가 SQL 쿼리를 작성하는 것 이라고 이해하면 될 것 같다.
그리고 실제로 본인이 생각한대로 보통 입밖으로 말을 꺼내게 되지만 간혹 내가 생각지도 못하게 실수로 다른 말을 내뱉는 경우가 있을 것이다. 아니면 혀를 깨물어서 말을 하지 못하는?? 뭐 대충 이러한 경우를 SQL로 예를 들면 1개의 row를 출력하고자 했으나 10개의 row가 출력된다던지, 에러가 발생한다던지 하는 것이 물리적으로 실행되어 쿼리가 수행되고, 그 과정을 통해 결과가 도출되는 것이 SQL의 대략적인 과정 일 것이다.
SQL은 너무 방대하다. 좀 더 넓은 범위에서는 데이터베이스자체를 난 평생 완벽하게 이해하지 못 할 것이다. DB가 이해할 수 없는 판타지 같은 영역이라면, 나는 마법을 쓰지 못하지만 게임에 접속하여 캐릭터를 통해 마법을 체험해보는 것에 집중하려고 한다. 마법을 쓰는 마법사도 무언가의 정신적인 미지의 힘을 깨우쳐서 마법을 쓰는 거지 그것의 정확한 원리는 이해하지 못 할 것이다. 마찬가지로 SQL를 개발한 사람도 DB라는 이 방대한 녀셕을 완벽하게 알지는 못 할 것이다.
하여 지금부터 나는 이 SQL이라는 마법사? 를 어떻게 키울지? 어떤 몬스터에게 어떤 스킬을 사용해야 데미지를 많이 줄 수 있는지에 관한 내용들을 블로그에 정리하는 기록해 두려고 한다. 그때그때 가이드북처럼 꺼내 보려는 용도와 조금 이나마 DB라는 것을 더 이해하기 위해...
SQL 튜닝이 뭔데??
SQL 튜닝이란 최적화라고 보면 된 다. 예를 들면 일반 냄비에 라면을 끓여 먹으면 10분이 걸린다. 그런데 양은냄비에 끓여 먹으면 5분만에 먹을 수 있다. 여기서 일반냄비를 양은냄비로 교체하는 과정이 SQL 튜닝이라고 보면 된다. 결국 똑같은 라면을 먹지만 더 빨리 먹을 수 있다는 장점이 생긴다.
근데 만약에 라면을 1개만 끓여 먹으려고 하는데 한 20분 정도되는 크기의 양은냄비로 교체해서 끓여 먹으면 어떻게 될까? 먹기가 불편하지 않을까? 10분이 걸리더라고 일반 냄비로 끓여 먹는게 더 현실적이지 않을까?
SQL을 공부하다보면 정규화, 반정규화의 개념이 나온다. 일반적으로는 정규화가 데이터의 무결성을 위해 좋다고 하지만, 그렇다고해서 정규화가 반정규화보다 항상 좋다는 것은 아니다. 이렇게 SQL은 프로그래밍에 의해서 컴퓨터가 동작하기 때문에 정확하지만 SQL 쿼리는 사람이 작성하는 것이기 때문에, 변수가 무궁무진하다. 그래서 쿼리를 어떻게 잘 작성하냐에 따라서 DB 전문가로서의 능력을 보여줄 수 있게 되는 것이다.
난 추후 SQLP를 취득 할 것이고, 이 글은 성지가 될 것이다! (졸려서 막 쓰는 중)
본 글은 작성자가 공부한 것을 기록하기 위하여 작성한 것으로, 100% 정확한 정보가 아닐 수 있습니다. 정정을 요청하셔도 좋고 여러 의견을 주시면 너무너무 환영이고 감사하겠습니다.
'Language > SQL 튜닝' 카테고리의 다른 글
1장. [SQL 분석 도구] 1-5. DBMS_XPLAN 패키지 (0) | 2021.10.07 |
---|---|
1장. [SQL 분석 도구] 1-4. V$SQL (0) | 2021.10.06 |
1장. [SQL 분석 도구] 1-3. 트레이스 수집 (0) | 2021.10.05 |
1장. [SQL 분석 도구] 1-2. AutoTrace (0) | 2021.10.04 |
1장. [SQL 분석 도구] 1-1. Explain Plan (0) | 2021.10.03 |