행위

"커서 Cursor"의 두 판 사이의 차이

DB CAFE

(라이브러리 캐시에 저장된 커서 조회)
23번째 줄: 23번째 줄:
 
# 라이브러리 캐시에 저장되는 부모/자식 커서를 위해 shared pool 메모리가 소모됨
 
# 라이브러리 캐시에 저장되는 부모/자식 커서를 위해 shared pool 메모리가 소모됨
 
# shared pool은 모든 세션이 공유하기 때문에 메모리 할당시 반드시 래치(11g 부터는 뮤텍스)가 발생되는 직렬화 과정을 거쳐야함.
 
# shared pool은 모든 세션이 공유하기 때문에 메모리 할당시 반드시 래치(11g 부터는 뮤텍스)가 발생되는 직렬화 과정을 거쳐야함.
#
 
 
}}
 
}}
  
 
[[Category:oracle]]
 
[[Category:oracle]]

2024년 1월 19일 (금) 17:04 판

thumb_up 추천메뉴 바로가기


  1. A cursor is a name or handle to a specific private SQL area.
  2. As shown in Figure 14-5, you can think of a cursor as a pointer on the client side and as a state on the server side.
  3. Because cursors are closely associated with private SQL areas, the terms are sometimes used interchangeably.

  1. 커서는 특정 개인(private) SQL 영역에 대한 이름 또는 핸들입니다.
    1. 핸들은 프로그램이 리소스에 액세스 할수 있도록 만들어 주는 메모리 구조
    2. 핸들은 클라이언트 메모리에 위치 하고 서버 프로세스에 할당된 메모리구조(SGA 내부의 라이브러리 캐시)를 참조
  2. 그림에서 볼 수 있듯이 커서는 클라이언트 측의 포인터와 서버 측의 상태로 생각할 수 있습니다.
  3. 커서는 서버측 개인용(private) SQL 영역과 밀접하게 연관되어 있기 때문에 이 용어는 때때로 같은 의미로 사용됩니다.
    1. 서버측 개인용 SQL영역에는 바인드 변수값과 쿼리 수행 상태 정보가 저장
    2. 서버측 개인용 SQL영역을 저장하는데 사용하는 세션 메모리를 UGA(User Global Area)라고 한다.

cncpt324.gif

라이브러리 캐시에 저장된 커서 조회[편집]

  • V$SQLAREA
  • V$SQL
  1. 부모커서 = sql_id
  2. 자식커서 = child_number
assignment 하드파싱을 피해야하는 이유 = 오라클이 공유가능한 커서(shared pool) 를 라이브러리 캐시에 저장하는 이유
  1. 실행 계획 생성작업은 CPU 부하가 많이 발생되는 작업
  2. 라이브러리 캐시에 저장되는 부모/자식 커서를 위해 shared pool 메모리가 소모됨
  3. shared pool은 모든 세션이 공유하기 때문에 메모리 할당시 반드시 래치(11g 부터는 뮤텍스)가 발생되는 직렬화 과정을 거쳐야함.