IT 이야기/DB

[SQLP 시험대비 요약/단답형] 공유커서, 세션커서, 애플리케이션 커서

하늘봉 2022. 9. 11. 12:00
반응형

커서(Cursor)
커서는 상황에 따라 여러 가지 의미로 사용되므로 커서의 의미를 명확히 해야 합니다.
커서는 아래 3가지를 모두 일컫는 말입니다.

공유 커서 (shared cursor) : 라이브러리 캐시에 공유돼 있는 커서
세션 커서 (session cursor) : Private SQL Area(PGA)에 저장된 커서
애플리케이션 커서 (application cursor) : 세션 커서를 가리키는 핸들


공유 커서 (shared cursor)

SQL을 수행하면 서버 프로세스는 해당 SQL이 라이브러리 캐시에 공유돼 있는지를 먼저 확인합니다.
없으면 최적화를 통해 실행계획을 만들고, 라이브러리 캐시에 공유합니다.
라이브러리 캐시에 공유돼 있는 Shared SQL Area를 '커서'라고 부릅니다.


세션 커서 (session cursor)

라이브러리 캐시에 공유돼 있는 커서를 실행할 때는 우선 PGA 영역에 메모리를 할당 합니다.
Shared SQL Area를 읽어 커서를 실행하는 데 필요한 정보를 Private SQL Area에 담고, 공유 커서를 가리키는 포인터를 유지합니다.
그리고 이런 준비과정을 '커서를 오픈한다' 라고 하는데 
다시 말해  커서 오픈은 라이브러리 캐시에 공유돼 있는 커서를 인스턴스화함으로써
PGA에 커서를 위한 메모리 공간을 할당하고 실제 데이터 추출을 시작할 수 있도록 하는 것입니다.


애플리케이션 커서 (application cursor) 

마지막으로 PGA에 있는 커서를 핸들링하려면 JAVA, VB, PL/SQL 같은 클라이언트 애플리케이션에도 
리소스를 할당해야 하는데, 이 또한 커서라는 용어를 사용합니다.

 

 

 

* 한국데이터산업진흥원의 SQL 전문가 가이드 내용과 디비안의 오라클 성능 고도화 원리와 해법 내용을 기반으로 작성하였습니다.

반응형