[Oracle] PGA- Cursor란?

sua-tech
|2024. 4. 15. 22:26

Cursor란?

서버 프로세스내의 Private SQL area를 가리키는 일종의 Handle(Pointer)를 지칭.

Cursor는 클라이언트 프로세스가 서버의 데이터를 가져오기 위해 가지는 일종의 Pointer임

1. Client에서 SQL 요청

2. DB storage 또는 buffer cache 에 있는 데이터를 Private SQL Area에 저장후에 Client에게 반환

3. Client 는 요청한 SQL 데이터가 완전히 반환 될때까지 fetch 요청

 

Client 에선 pl/sql은 cursor 라고 되어있고 , JDBC에선 ResultSet으로 데이터를 받는다 

Client에선 Cursor point( =server process의 Memory Pointer)만 움직여서 요청하면 된다 

 

PL/SQL JDBC
Declare Cursor Create PrepareStatement
Open Cursor ResultSet = Execute Query
Fetch Cursor ResultSet next() 
Close Cursor ResultSet cloes()

* Client에서 Server process로 부터 한번에 받을 데이터양을 Array Size로 조절할 수 있다 

* Array size 만큼 fetch해서 뿌림