DB

SQL Processing

J520 2019. 11. 21. 16:55

SQL 처리 Process


Stages of SQL Processing

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에서 해시 값을 찾음(동일한 쿼리가 캐시에 저장되어 있는지 검색)

Shared Pool(ORACLE)



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

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