DBMS는 사용자들로부터 SQL문을 받음.
SQL은 data가 간단한 형태의 테이블 형태로 들어있다고 생각하고 사용을 함.
실제로는 해당 table은 물리적인 구조로 저장되어 있음.
즉, 특정한 구조의 파일과 index를 사용해서 저장되어 있음.
따라서, DBMS는 간단한 SQL문을 복잡한 구조에 맞춰서 처리해야 함.
파일이 어떤 구조로, 무슨 인덱스가 있느냐에 따라 하나의 SQL문을 처리할 수 있는 경우의 수가 많음.
예) 순차 탐색: 앞에서 부터 차례대로 검색
예) 이진 탐색: 정렬이 되어 있는 경우
예) 색인을 이용한 탐색
SQL문 처리방법의 경우의 수는 파일, 색인의 구성에 따라 달라지고, 그 방법의 성능이 달라짐.
따라서, DBMS는 현재 저장되어 있는 파일과 인덱스를 이용해서 하나의 SQL문을 처리할 수 있는 경우의 수를 따져보고, 어느것이 성능이 좋은지를 판단해서 시간이 적게 고르는 것을 골라서 처리하는 과정(최적화)을 진행해해야 함.
최적화를 통해서 하나의 SQL문이 처리되는 성능을 좋게 할 수 있는 것은 아주 중요한 기술임!
DBMS라는 소프트웨어는 이런 최적화를 자동으로 해주는 기능을 가지고 있음.
DBMS가 어떻게 최적화를 했느냐에 따라서 성능 튜닝을 할 수 있음.
성능 튜닝이란?
사용자가 어떤 SQL문을 주게 되면 현재의 파일과 현재의 색인을 이용해서 실행할 수 있는 경우의 수를 따져보고, 그 중에서 어떤 것이 비용이 적게 걸리는지를 선택하는 최적화 과정을 거치는데,
관리자가 파일의 구조를 다르게 바꾸던가 혹은 새로운 인덱스를 추가하면 더 좋은 결과 / 최적화 결과가 나올 수 있을 것이라고 판단하면 파일의 구조를 바꾸거나 색인을 추가하거나 그런 과정을 해줌.
그렇게 하면, 밑의 저장구조를 바꾸는데도 동일한 SQL문이더라도 실행 경우의 수가 늘어남. 그리고 새롭게 반영된 구조와 인덱스에 맞춰 최적화하기에 더 좋은 방법을 선택하므로 성능이 좋아질 수 있음.
따라서, 엄청나게 성능이 빨라질 수 있으므로, 질의 처리 결과나 파일 구조를 보고 성능 튜능을 할 수 있기 때문에 최적화에 대해서 알고 있으면 좋음.!