Cursor Life Cycle

모든 SQL(Select, Update, Delete) Cursor를 생성하여 실행됩니다. Pro*C 와 같은 툴을 사용하면 Cursor 의 각 단계를 프로그램에서 제어할 수 있고, 그렇지 않고 SQL*Plus 와 같은 툴을 사용할 경우에는 Implicit Cursor 가 내부적으로 생성되어, 결과만 보여지게 됩니다.

 

- Create Cursor

- Parse the statement

- Describe Query Result

- Define Query Output

- Bind Variables

- Parallelise the statement

- execute the statement

- Fetch rows of a query

- Close the cursor

 

SQL 처리의 3단계

- Parse -> Execute -> Fetch

 

Parse

- Syntax Check

- Object Resolution & Privilege Check (Dictionary 참조, Recursive SQL)

- Shared Pool(Shared SQL Area)에서 동일한 SQL 문장이 있는지 검색

- Determine Optimal Execution Plan (by Optimizer)

- Parsed Tree 생성하고 Shared SQL Area 에 저장

 

< Shared SQL Area 에 저장되는 내용 >

  _ SQL Text

  _ Explain Plan

  _ Parsed Tree

 

Execute

- 생성된 Parsed Tree 를 적용하여 실제 DATA 에 대한 I/O를 수행

 

Fetch

- SELECT 문일 경우에 행을 가져오는 과정

- 일반적으로 Array Fetch 가 사용됨 (사용방법은 Client Tool에 따라 다름)

  SQL*Plus 의 경우 Array Size(Default 15) 는 다음과 같이 확인하고 변경할 수 있다.

 

SQL> show arraysize

arraysize 15

SQL> set arraysize 20

SQL> show arraysize

arraysize 20

 

Cursor(SQL) 공유

- 동일한 SQL 일 경우 Shared SQL 에 있는 Explain Plan / Parsed Tree 을 가지고 실행하게 되어 Parse Time 이 필요없게 되고, 메모리(Shared SQL)를 절약할 수 있음

- 동일한 SQL 이란?

  _ SQL Text 가 동일해야 함(대소문자 구별, Space/Tab 문자, 주석 까지 같아야 함)

  _ 실제 참조되는 Object 가 동일해야 함

  _ Bind Variable’s Data Type 이 동일해야 함

- Parse 의 첫단계에서 동일한 SQL 문이 Shared SQL Area 에 존재하는지 Check 하는 과정




사업자 정보 표시
(주)블루원 | 김홍태 | 서울특별시 용산구 원효로 4가 135 금홍 2빌딩 | 사업자 등록번호 : 106-86-76684 | TEL : 02-3272-7200 | Mail : support_ora@blueone.co.kr | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기

+ Recent posts