쿼리 진행 순서와 관계된 DB요소 (MS SQL서버 기준)
영역 |
일어나는 일 |
관계된 DB 요소 |
웹서버 |
쿼리 구성 |
|
쿼리 전송 |
넷 라이브러리 |
|
DB서버 |
쿼리 분석 |
파서(Parser) |
|
옵티마이저(Optimizer) |
|
|
쿼리 최적화 |
|
|
쿼리 컴파일 |
컴파일러 |
|
쿼리 실행 (SELECT의 경우 WHERE -> ORDER BY -> TOP순) |
트랜잭션 매니저, 행 연산 매니저, 인덱스 매니저, 락 매니저, 페이지 매니저, 텍스트 매니저, 파일/디바이스 매니저, 버퍼 매니저, 로그 매니저, 소트 매니저, IO 매니저 |
| 결과 데이터 반환 | 넷 라이브러리 |
쿼리 실행 단계.
웹서버에서 구성된 커리는 네트워크를 통해서 DB서버로 전송됩니다.
DB서버로 들어온 쿼리 내용은 DB서버 내의 각 요소들에 의해서 처리되는데 일단 파서(Parser)에 의해 쿼리 구문이 분석됩니다.
옵티마이저(Optimizer)가 데이터의 분포 상황이나 인덱스의 구성 및 종류에 따라 쿼리가 어떻게 수행되는 것이 가장 효율적인지를 판단하고 그에 따라서 쿼리 실행 계획을 세웁니다.
실행 계획이 세워지면 컴파일러가 쿼리를 컴파일해서 시스템이 인식할 수 있는 실행 코드로 만듭니다.
실행 코드를 이용해서 실제로 데이터를 처리하게 되는데, 이 과정에서 일반적인 수리 연산을 처리하거나, 루프를 돌거나, 메모리를 설정하고, 파일을 읽거나 쓰며, 또한 여러 작업이 동시에 액세스하게 되는 데이터에 대한 동기화 락(Synchronization Lock)을 설정합니다.
컴파일된 실행 코드가 작동하는 과정은 각 매니저 컴포넌트들이 각각 맡은 역할을 수행하는 것이고, 궁극적으로는 매니저 컴포넌트들이 Win32 API(혹은 그 정도 단계의 시스템 함수)를 호출하는 것이 됩니다.
실행 코드의 수행을 모두 마치게 되면 실행의 결과로 생성된 데이터나 결과 코드를 다시 네트워크를 통해서 돌려보냅니다.
출처 : 국내 정상의 시스템 프로그래머가 알려주는 웹사이트 튜닝. [책]
'개인공부 > 웹' 카테고리의 다른 글
Sublime package 유용한 패키지들 (0) | 2018.12.25 |
---|---|
SQL 쿼리 튜닝 팁 [출처 _ 책 국내 정상의 시스템 프로그래머가 알려주는 웹사이트 튜닝] (0) | 2013.06.15 |
[php_ 1.0version] 보안동아리사이트 제작완료 (0) | 2013.06.13 |
처음 배우는 jQuery (0) | 2013.05.13 |
mysql 한글깨짐현상 (0) | 2013.05.13 |