SQL 처리 Process
Stages of SQL Processing
1. SQL Statement
: client가 쿼리 질의
2. Syntax Check
: 문법적인 검사 수행
예시) SQL 질의에서 FROM 오타
SQL> SELECT * FORM emp; SELECT * FORM emp * ERROR at line 1: ORA-00923: FROM keyword not found where expected
3. Semantic Check
: 의미 상 검사 수행(오브젝트 유무 등)
예시) emp2 테이블이 존재하지 않는데 질의
SQL> SELECT * FROM emp2; SELECT * FROM emp2 * ERROR at line 1: ORA-00942: table or view does not exist
4. Shared Pool Check
① 해시 함수로부터 쿼리의 해시 값(V$SQL.SQL_ID) 얻음
② Shared pool의 Library cache에서 해시 값을 찾음(동일한 쿼리가 캐시에 저장되어 있는지 검색)
4.1. Soft Parsing(Library cache hit)
: Library cache에서 해시 값을 찾은 경우 -> 함께 저장된 실행계획과 Execution 수행
4.2. Hard Parsing(Library cache miss)
: Library cache에서 해시 값을 못 찾은 경우 -> Optimization 작업 수행
5. Optimization
: 쿼리의 실행 계획을 뽑고, 각각의 cost 평가
예시) 아래 쿼리에 대한 실행 계획
SELECT e.last_name, j.job_title, d.department_name FROM hr.employees e, hr.departments d, hr.jobs j
WHERE e.department_id = d.department_id AND e.job_id = j.job_id AND e.last_name LIKE 'A%';
Execution Plan ---------------------------------------------------------- Plan hash value: 975837011 -------------------------------------------------------------------------------- | Id| Operation | Name |Rows|Bytes|Cost(%CPU)|Time | -------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 3 | 189 | 7(15)| 00:00:01 | |*1 | HASH JOIN | | 3 | 189 | 7(15)| 00:00:01 | |*2 | HASH JOIN | | 3 | 141 | 5(20)| 00:00:01 | | 3 | TABLE ACCESS BY INDEX ROWID| EMPLOYEES | 3 | 60 | 2 (0)| 00:00:01 | |*4 | INDEX RANGE SCAN | EMP_NAME_IX | 3 | | 1 (0)| 00:00:01 | | 5 | TABLE ACCESS FULL | JOBS | 19 | 513 | 2 (0)| 00:00:01 | | 6 | TABLE ACCESS FULL | DEPARTMENTS | 27 | 432 | 2 (0)| 00:00:01 | --------------------------------------------------------------------------------
6. Row Source Generation
: 최적의 실행 계획을 받아 row source tree 제작
예시) 5번 실행계획에 대한 row source tree
7. Execution
: row source tree 각각의 row source를 실행하고 그 결과를 client로 보냄
[참고]
https://docs.oracle.com/database/121/TGSQL/tgsql_sqlproc.htm#TGSQL178
SQL Processing
The semantics of a statement are its meaning. A semantic check determines whether a statement is meaningful, for example, whether the objects and columns in the statement exist. A syntactically correct statement can fail a semantic check, as shown in the f
docs.oracle.com
http://www.gurubee.net/lecture/2392
SQL 파싱 부하
1. SQL 처리과정사용자는 구조화된 질의언어(SQL, Structured Query Language)를 통해 사용자가 원하는 결과집합을 정의DBMS는 사용자의 SQL을 SQL옵..
www.gurubee.net
http://ojc.asia/bbs/board.php?bo_table=LecOrccleTun&wr_id=113
[SQL,SELECT문처리순서/과정]parsing,optimization,execution,fetch,옵티마이저,파싱,실행,패치
[SQL,SELECT문처리순서/과정]parsing,optimization,execution,fetch,옵티마이저,파싱,실행,패치 10.1 SQL문 처리과정 n 사용자가 SQL문장(select)을 실행 - 오라클 서버측 리스너가 서버 프로세스로 SQL문장을 전달 n SQL 파싱 - 서버프로세스는 Shared Pool의 LibraryCache를 조회해서 동일한…
ojc.asia
https://hayleyfish.tistory.com/65
SQL 문장 실행 원리
전체 과정 정리하자면, 1. User Process가 서버 위치 정보가 들어있는 tnsnames.ora를 참고해 해당 서버로 찾아감 2. 서버 쪽 listener.ora 파일 안에 접속하려는 서버 IP가 있으면 리스너는 해당 Server Process..
hayleyfish.tistory.com
'DB' 카테고리의 다른 글
SQLD 자격증 보수 교육 (0) | 2024.07.24 |
---|---|
ORA-28001 : the password has expired (0) | 2019.12.02 |
Oracle 11g XE sid 변경 (2) | 2019.11.13 |