DB/Oracle
SQL 실행계획(Explain) 해석 / 읽는법
밥알이
2022. 3. 18. 10:09
MSA 개발방법이 적용되면서 SQL에 대한 의존도가 예전에 비해 많이 없어지기는 했습니다.
그러나, Application으로만 운영되는 시스템은 없고, NO-SQL DB들에 의해 RDB에 의존도가 적어 졌다고 해도 중요 업무 시스템은 RDB를 여전히 많이 사용합니다.
개발자라면 DB를 잘 이해하여 Application을 만들어야 운영시 문제도 없습니다.
DB 쿼리를 만든 후 실행계획(Plan)을 항상 보는 습관, Plan을 해석하는 습관도 가져야합니다.
SQL Plan을 해석하는 방법을 정리해 볼려고 합니다.
PLAN 보는법
- 위에서 아래로 내려가면서 제일 먼저 읽을 위치 찾기
- 내려가는 과정에서 같은 들여쓰기가 있으면, 무조건 위에서 아래 순으로 읽기
- 같은 레벨에 들여쓰기된 하위 스텝이 존재하면, 가장 안쪽으로 들여쓰기 된 스텝을 시작으로 상위 스텝으로 읽기
예제
위 이미지에 있는 Plan으로 순서를 기재 하면 아래와 같이 해석이 됩니다.
1번 수행 -> 2번 수행 -> 3번 수행 -> 4번 수행 -> 5번 수행 -> 6번 수행 -> 결과 리턴
PLAN 용어
PLAN에 보이는 용어에 대한 의미 입니다.
- Cost
-. 쿼리를 수행함에 있어 사용된 자원이나, 작업의 단위를 나타냅니다. 적을 수록 쿼리가 더 효율적이겠죠
-. 단, 어쩔수 없이 Full Scan을 해야 하는 쿼리는 의미가 없을 수도 있습니다. - Cardinality
-. 행 집합에서 행의 수를 표시 합니다. 행 집합은 기본 테이블, 뷰, 조인이나, GROUP BY의 결과 입니다.
-. 행 집합을 의미하니 적게 나타날수록 SQL이 빠를 수 있습니다.
개발자라면 DB 또한 잘 이해하고 설계도 해야 하니 PLAN 해석법을 꼭 익혀 보세요.