본문 바로가기
컴퓨터/Oracle

[Oracle]V$SQLAREA SHARED POOL분석 오라클 공유풀 분석

by TEATO 2014. 7. 17.
반응형

[Oracle]V$SQLAREA SHARED POOL분석 오라클

공유풀 분석


튜닝을 할때는사전 튜닝사후튜닝이 있습니다.

사후튜닝은 고객에게 컴플레인이 들어오면 그부분을 찾아서 튜닝을 해주면 됩니다.

사전튜닝은 작성된 SQL문장중에서 메모리를 가장 많이 차지하고있는것, CPU를 가장많이 사용하고있는것

디스크 IO가 가장많은것을 찾아 미리 튜닝해주는 것입니다. 

이러한 SQLV$SQLAREA를 찾아보면 SHARED POOL에서 저런것들을 찾아낼 수 있습니다.

SHARED POOL이 작동하는 것을 짧게 설명하면

SHARED POOL이 꽉 차서 더이상 SQL파싱결과를 저장할 공간이 없다면

 LRU알고리즘으로 최근에 사용이 가장 안된 파싱결과를 제거하고 거기에 새로파싱한 결과를 넣어줍니다.

SHARED POOL은 정확히 일치하는 SQL문장만 파싱을 안해주고 인식하기 때문에

SQL문장은 스페이스바 대소문자 등...패턴을 일치시키는 것이 좋습니다.


V$SQLAREA에는 다양한 칼럼들이 있는데요. 각자 취향에 맞게 만들어서 조회하면 됩니다.

위문장은 SQL문장에 EMP, DEPT가 들어간 문장을 보여주는 것입니다.

칼럼들은 DESC V$SQLAREA로 확인해보세요


이렇게 공유풀에 저장된 SQL문장들이 들어있습니다.

INVALIDATIONS를 주목해주세요 현재 값이 0입니다.


ALTER TABLE로 DEPT 칼럼 도메인값을 변경시켜줬습니다.

V$SQLAREA를 확인해보니 INVALIDATIONS가 1이된것을 볼 수 있습니다.

이는 해당 테이블에 변경이 발생해서 SHARED POOL에서 삭제된것을 의미합니다.


V$SQLAREA 칼럼에대한 정보는

여기

를 참고해주세요. 영어로된 문서를 읽어보는 습관을 들이는 것이 나중에 도움이 많이됩니다.


ALTER SYSTEM FLUSH SHARED_POOL이라하면 SHARED POOL이 전부 비워집니다.

SHARED POOL은 자주사용하는 SQL문의 파싱결과가 남기때문에 일과시간에 비워버린다면

사용하던 쿼리들을 다시 파싱해야하므로 문제가 많겠죠.

SHARED POOL이 다 찼다면 근본적인 문제를 찾아서 해결해야합니다.

SQL문을 잘못작성하는것이 그 이유가 될 수 있겠죠




반응형

댓글