Database/개념

[DATABASE] 데이터베이스 스캔방식 설정으로 쿼리 응답속도 높이는 방법 알아보기

꽁담 2018. 8. 17. 02:36

실행 계획(Plan) 이란, 결과를 도출하기 위해 어떤 방법 혹은 순서로 데이터에 접근할지를 나타내는 것을 의미합니다.


접근 방식은 테이블 스캔과, 인덱스 스캔으로 나뉘어집니다.

이 접근 방식은 테이블의 데이터 량에 따라 성능차이가 발생할 수 있습니다.




예를 들어 보겠습니다.


테이블에 데이터가 1건이 있는 경우, 학번 1001 을 검색하기 위해선, 아래 그림 중 어느 게 빠를까요?

테이블에 데이터가 10,000 건(엄청 많음을 의미)이 있는 경우, 학번 1001 을 검색하기 위해선, 아래 그림 중 어느게 빠를까요?


테이블의 건수가 많은 경우

테이블 스캔은 수많은 데이터중 1건을 스캔해야 하지만,

인덱스 스캔은 1001 이라는 데이터에 접근한 뒤, 이 주소를 이용하여 테이블에 접근하면 되므로 성능에서 이점이 생깁니다.


테이블이 1건만 있는 경우

테이블 스캔은 1건만 스캔하면 되지만,

인덱스 스캔은 1건 스캔을 위해서라도 인덱스를 거쳐야 하므로, 이번에는 오히려 인덱스 스캔이 성능이 떨어지게 됩니다.



이번에는 다른 경우로 예를 들어보겠습니다.


테이블의 건수가 많고 또한 다량의 데이터를 스캔해야 하는경우

인덱스 스캔을 하면 빠를 거라고 생각하지만,

테이블 스캔의 경우 다량의 데이터를 인덱스를 거치지 않고 스캔하기 때문에 비용상의 이점이 발생할 수 있습니다.




실행 계획의 구성요소는, 접근 경로, 결합 방법, 결합 순서가 있습니다.


접근 경로

테이블 스캔과 인덱스 스캔이 있습니다.


결합 방법

Nested Loops, Hash Join 이 있습니다.


결합 순서

다수개의 테이블을 조인할 때, 처음에 데이터가 큰 테이블을 결합하면 접근을 많이 해야하므로,

작은 테이블을 조건으로 결과가 적게 나오는 테이블부터 접근하는게 좋습니다.



좋은 성능을 유지하기 위해서 최적의 실행 계획을 만드는 능력은 매우 중요합니다.