7. 세션 커서 캐싱
2010.06.29 12:32
SQL수행에 따른 퍼포먼스 저하.
①소프트파싱. 즉, 파싱된 SQL구문을 또 다시 분석하지 말고, 공유함으로 하드파싱의 횟수를 낮춰서 효율을 올릴수 있다.
②쿼리수행후엔 커서를 닫고,
그로인해 세션커서가 할당받은 메모리 및 해당포인터는 해제된다.
③커서
오픈을 위한작업, library cache래치를 획득하여 라이브러리 캐시를 탐색하는 등의 작업이 발생하며, 이것은 부담스러운 작업이다..
④결국, 소프트파싱을 한다해도, SQL수행횟수가 많아지면 경합이 발생하게 된다.
⑤좀 더 부하를 줄이기 위해서는(③작업도
최소화하려면), 소프트파싱 이외에도 세션커서를 공유해야 한다..
♨오라클은 세션커서캐싱이라는 기능을 제공하여 ⑤를 실현한다.
세션커서를 공유함으로 해서 다음과 같은 잇점이 있다.
●SQL문을 파싱, 구문분석하고 라이브러리 캐시에서 커서를 탐색하는 과정 감소. (CPU사용량감소)
●소프트 파싱 과정에서 발생하는 래치요청횟수를 감소.
커서를 닫는 순간(②).
Parse Call횟수를 확인하여 3이
상이면 ”자주사용”으로 간주 해당 세션커서를 세션커서캐시로 옮긴다.
※세션커서캐시 내에서는, LRU
알고리즘을 이용, 사용빈도가 낮은 순으로 밀려난다.
◆session_cached_cursors 캐싱할 커서의 갯수. 0보다 큰값을 설정하면 Parse Call이 발생할때마다 세션커서캐시를 먼저살펴봄.
◆users_opening (v$sql항목) 공유커서를 참조하고 있는 세션커서의 수.
◆users_executing (v$sql항목) 해당 SQL을 현재 실행 중인, 즉 커서가 열려있는 세션커서의 수를 보여준다.
실습 1)
같은 SQL을 3번실행시켜보면, 3번째(Parse_Calls=3) 비로소 ?該커서가 공유커서를 참조(USERS_OPENING=1)하게 되는것을 볼 수 있다.
session cursor cache hits항목을 통해 이 기능의 활용 빈도를 측정할 수 있다.
실습 2)
session_cached_cursors
파라메타를 0으로 설정하고 INSERT문을 10000번 실행시켜본다.
이때의 session cursor cache hits와 parse count의 변화를 관찰해보자.
session cursor cache hits는 변화가 없고, parse count는 10000가량 늘은것을 알수있다.
실습 3)
session_cached_cursors
파라메타를 100으로 설정하고 INSERT문을 10000번 실행시켜본다.
insert문이 10000번 수행되는 동안, parse count와 함께 session cursor cache hits도 10000번가까이 증가했음을 알수 있다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
67 | Front Page | 운영자 | 2010.05.17 | 154865 |
66 | 1 장. 오라클 아키텍처 | 운영자 | 2010.05.20 | 17842 |
65 | 1. 기본 아키텍처 [1] | 휘휘 | 2010.05.23 | 19899 |
64 | 3. 버퍼 Lock [1] | 휘휘 | 2010.05.24 | 15225 |
63 | 2. DB 버퍼 캐시 | 휘휘 | 2010.05.24 | 21916 |
62 | 4. Redo | 휘휘 | 2010.05.24 | 11314 |
61 | 9. Snapshot too old | balto | 2010.05.30 | 8100 |
60 | 10. 대기 이벤트 | balto | 2010.05.30 | 8010 |
59 | 7. Consistent vs. Current 모드 읽기 | 휘휘 | 2010.05.31 | 10537 |
58 | 8. 블록 클린아웃 | 휘휘 | 2010.05.31 | 12282 |
57 | 11. Shared Pool | 실천하자 | 2010.05.31 | 18511 |
56 | 5. Undo | 토시리 | 2010.05.31 | 18650 |
55 | 1. 트랜잭션 동시성 제어 | 실천하자 | 2010.05.31 | 8631 |
54 | 6. 문장수준 읽기 일관성 | 토시리 | 2010.06.01 | 10432 |
53 | 2장. 트랜잭션과 Lock | 운영자 | 2010.06.01 | 6895 |
52 | 1. Explain Plan | 실천하자 | 2010.06.06 | 14663 |
51 | 2. AutoTrace | 실천하자 | 2010.06.06 | 8597 |
50 | 3장. 오라클 성능 관리 | 운영자 | 2010.06.06 | 6694 |
49 | 3. SQL 트레이스 | balto | 2010.06.06 | 21175 |
48 | 4. DBMS_XPLAN 패키지 | balto | 2010.06.06 | 10461 |