본문 바로가기
ORACLE

[Oracle] 쿼리 수행 방식?

by 김뽀씨 2016. 8. 18.

지금 내가 알고 있는게 확실히 맞는건지 아닌건지 모르겠지만

정리를 해두자면

 

오라클의 경우

SGA 메모리의 BUFFER를 통해 쿼리가 수행됨.

따라서 BUFFER 사이즈가 작을 경우 성능이 나빠짐.

 

무튼 SGA의 메모리의 2% 미만의 용량을 가진 TABLE SIZE를 가진 TABLE의 경우 항상 메모리의 상주해서 작업 (즉 빠름)

하지만 그 이상의 사이즈를 갖는 테이블의 경우 DISK에서 BUFFER로 올린다음 쿼리 수행 후 다시 DISK로 내림

이 작업을 반복적으로 수행하기에 BUFFER에 항상 상주되어 있는 테이블에 비해 느려짐

 

하지만 무조건 이렇게 된다면 문제가 되기에 오라클에서는 동일한 작업이 이뤄지는 쿼리에 대해서는 COUNT를 수행

특정 COUNT 이상이 될 경우 BUFFER에 올려놓고 사용하게 됨.

이렇기에 처음에만 느리고 나중에 빨라진다고 느끼는 부분임.

 

아! 추가적으로

실행 계획 혹은 인덱스 재빌드는 오라클 내부에서 자동으로 수행된다고 함.

 

끝.!