오라클

SELECT문의 처리과정

OEasy 2007. 9. 26. 16:43

출처 : http://www.dbguide.net

 

SELECT문의 처리과정

 



< 출처 : http://wwwdbguide.net >

 

지금부터 SELECT문을 처리하는 과정을 통해 오라클 데이터베이스의 구조를 알아보도록 하겠습니다.

( 위 그림의 "클릭" 버튼을 누르시면 "SELECT문의 처리과정"을 그림을 통해 이해할 수 있습니다.)

현재, 데이터베이스는 시작 명령어(STARTUP)에 의해 인스턴스 영역(메모리 영역과 백그운드 프로세스 영역)과

파일영역이 사용 가능한 상태입니다.

한 명의 사용자가 SCOTT/TIGER로 데이터베이스에 새로운 접속을 요구합니다.

사용자의 클라이언트 영역(P/C)에는 접속정보와 시간정보를 포함하는 하나의 사용자 프로세스가 활성화됩니다.

서버측 에는 하나의 서버 프로세스가 활성화됩니다. SQL*PLUS 툴에는 SQL> 프롬프트가 나타나고 사용자는

SELECT문을 작성합니다.

사용자가 엔터키를 누르면 SELECT문장은 네트워크를 통해 서버 프로세스로 전송이 됩니다.

SELECT문을 전송받은 서버 프로세스는 다음과 같은 작업을 실행합니다.

 

-----------------------------------------------------------------------------------------------------

 

1)구문분석 단계


먼저, 사용자가 실행한 SQL문이 데이터베이스에서 처음 사용된 문장인지 이미 사용된 문장인지를

공유 풀 영역을 검색하여 확인합니다.

확인하는 이유는 이미 사용된 문장이라면 구문분석(Parsing)이라는 작업을 할 필요가 없고 처음 사용되었다면

정상적으로 구문분석 작업을 해야 하기 때문입니다.

구문분석 단계에서는 SQL문의 문법이 제대로 작성되었는지를 분석하고(예를 들어, SELECT가 SLECC로 잘못

작성되지는 않았는지 등) 사용된 테이블, 뷰 등이 존재하는지를('SELECT * FROM emp'에서 EMP 테이블이

데이터베이스 내에 존재하는지) 확인합니다.

SQL문이 실행될 때 가장 빠르게 데이터를 검색해줄 수 있는 방법(Explain Plan)도 찾아줍니다.

2)실행 단계

 

구문분석이 정상적으로 실행되면 서버 프로세스는 메모리 영역의 데이터베이스버퍼 캐시영역을 검색하여

해당 테이블이 다른 사용자의 다른 SQL문에 의해 이미 데이터버퍼 캐시영역에 존재하는지를 검색합니다.

만약, 존재하지 않는다면 정의된 테이블의 해당 데이터 파일로부터 테이블을 읽어서 데이터버퍼

 캐쉬영역에 저장합니다.

만약, 사용자가 UPDATE, DELETE, INSERT문을 실행하였다면 데이터 버퍼캐쉬 영역에서 새로운

데이터로 변경, 삭제 또는 입력하게 됩니다.

 

3)인출 단계

 

실행단계가 끝나면 서버 프로세스는 데이터버퍼 캐쉬영역에서 관련 테이블 데이터를 읽어서 사용자의

클라이언트(P/C) 화면에 보여줍니다.

단, SELECT문을 실행하는 경우에만 인출(Fetch)단계가 실행되고 UPDATE, INSERT, DELETE문 실행 시는

인출단계는 실행되지 않습니다. DML문을 실행하는 경우에 실행 결과가 화면에 출력되는지를 생각해 보세요.

몇 건의 행이 변경, 삭제, 입력되었다는 메시지 만 나타나죠?

 즉, DML문을 실행할 때는 인출단계는 실행되지 않습니다. SELECT문에 만 적용됩니다.

'오라클' 카테고리의 다른 글

솔라리스 9에 오라클 10g 설치하기  (0) 2008.04.04
COMMIT문의 처리과정  (0) 2007.09.26
DML문의 처리과정  (0) 2007.09.26
DBA의 역할  (0) 2007.09.07
오라클 어드민 팁 [펌]  (0) 2007.05.02