본문 바로가기

개인공부/웹

쿼리 실행 단계 [출처_책 : 국내 정상의 시스템 프로그래머가 알려주는 웹사이트 튜닝]


쿼리 진행 순서와 관계된 DB요소 (MS SQL서버 기준)


영역 

일어나는 일 

관계된 DB 요소 

웹서버 

 쿼리 구성

 

 쿼리 전송 

 넷 라이브러리 

DB서버 

쿼리 분석 

파서(Parser) 

 

옵티마이저(Optimizer) 

 

쿼리 최적화 

 

 

쿼리 컴파일 

컴파일러 

 

쿼리 실행

(SELECT의 경우

WHERE -> ORDER BY -> TOP순) 

트랜잭션 매니저,

행 연산 매니저,

인덱스 매니저,

락 매니저,

페이지 매니저,

텍스트 매니저,

파일/디바이스 매니저,

버퍼 매니저,

로그 매니저,

소트 매니저,

IO 매니저


 

결과 데이터 반환
(레코드셋 반환) 

넷 라이브러리 



쿼리 실행 단계.


웹서버에서 구성된 커리는 네트워크를 통해서 DB서버로 전송됩니다.


DB서버로 들어온 쿼리 내용은 DB서버 내의 각 요소들에 의해서 처리되는데 일단 파서(Parser)에 의해 쿼리 구문이 분석됩니다.


옵티마이저(Optimizer)가 데이터의 분포 상황이나 인덱스의 구성 및 종류에 따라 쿼리가 어떻게 수행되는 것이 가장 효율적인지를 판단하고 그에 따라서 쿼리 실행 계획을 세웁니다.


실행 계획이 세워지면 컴파일러가 쿼리를 컴파일해서 시스템이 인식할 수 있는 실행 코드로 만듭니다.


실행 코드를 이용해서 실제로 데이터를 처리하게 되는데, 이 과정에서 일반적인 수리 연산을 처리하거나, 루프를 돌거나, 메모리를 설정하고, 파일을 읽거나 쓰며, 또한 여러 작업이 동시에 액세스하게 되는 데이터에 대한 동기화 락(Synchronization Lock)을 설정합니다.


컴파일된 실행 코드가 작동하는 과정은 각 매니저 컴포넌트들이 각각 맡은 역할을 수행하는 것이고, 궁극적으로는 매니저 컴포넌트들이 Win32 API(혹은 그 정도 단계의 시스템 함수)를 호출하는 것이 됩니다.


실행 코드의 수행을 모두 마치게 되면 실행의 결과로 생성된 데이터나 결과 코드를 다시 네트워크를 통해서 돌려보냅니다.


출처 : 국내 정상의 시스템 프로그래머가 알려주는 웹사이트 튜닝. [책]