ORACLE

[Oracle] 쿼리 수행 방식?

김뽀씨 2016. 8. 18. 09:58

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

정리를 해두자면

 

오라클의 경우

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

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

 

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

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

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

 

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

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

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

 

아! 추가적으로

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

 

끝.!