[1) 데이터 모델링의 이해]11. Shared Pool

Yu River·2022년 5월 31일
0

Shared Pool

1. 딕셔너리 캐시

  • 오라클 딕셔너리 정보를 저장해 두는 캐시영역이다.
  • Row 단위로 읽고 쓰기 때문에 '로우 캐시(Row Cache)' 라고도 불린다.
  • ⭐️ 테이블, 인덱스 같은 오브젝트는 물론 테이블 스페이스, 테이터파일, 세그먼트, 익스텐트, 사용자, 제약, Sequence, DB Link에 관한 정보들을 캐싱한다.

    ✅ 멋모르고 썼던 SELECT SEQ_NAME.NEXTVAL FROM DUAL... 알고 쓰자!😎

    • SEQUENCE CACHE는 오라클에서 고유한 정수형 값을 리턴하는 객체로 보통 PK에 사용된다.
    • SEQUENCE CACHE는 딕셔너리 캐시를 이용한다.

1) SEQUENCE CACHE 옵션

  • CACHE 옵션으로 로우 캐시 경합 감소 가능
  • 예를 들어 CACHE 20 는 NOCACHE 대비 로우 캐시 UPDATE 횟수가 5% 이다.
  • 사용할 NEXTVAL 이 많을 경우 CACHE 값을 상향 조정한다.

CACHE 옵션 종류

  • NOCAHCE
    • 인스턴스 친화도는 0이다.
    • 로컬 자원은 존재하지 않는다.
    • 시퀀스의 nextval를 호출할 때마다 row cache lock으로 동기화가 필요하다.
  • CACHE + NOOREDER
    • 2노드의 RAC에서 cache 속성 100의 시퀀스를 사용한다고 가정하면 노드A에서 1~100사이 로컬 캐시 를 할당하며 노드B에서 101~200사이 로컬 캐시를 할당한다.
    • 로컬캐시가 모두 소진되면, 로컬캐시가 할당될 때까지 SQ락이 대기한다.
    • 로컬캐시를 모두 소진하기 전까지는 nextval을 호출시 동기화 작업이 불필요하며 시퀀스 캐시 크기가 클 수록 인스턴스 친화도가 좋아진다.
  • CACHE + ORDER
    • 2노드의 RAC에서 cache 100 + order 속성의 시퀀스를 사용한다고 가정할 때 노드A와 노드B 모두 1~100사이의 로컬캐시 집합을 사용한다.
    • Nextval을 호출 할 때마다 SV락을 이용한 동기화가 필요하며, 이때 DFS lock handle을 대기한다.
      • placeholder이벤트 , events in waitclass other 라는 fixed-up이벤트로 기록된다.

(2) 라이브러리 캐시

  • 사용자가 던진 SQL과 그 실행계획을 저장해 두는 캐시영역이다.
  • 반복적인 하드 파싱을 최소화 하기 위해 새로운 캐시 공간이다.

1. ⭐️ 하드 파싱

다음은 하드 파싱의 과정이다.
1. 쿼리 구문을 분석해서 문법 오류 및 실행 권한 등을 체크한 뒤
2. 최적화 과정을 거쳐 실행 계획을 만들고
3. SQL 실행 엔진이 이해할 수 있는 형태의 포맷팅한다.

2. ⭐️ 소프트 파싱

  • SQL과 실행계획을 라이브러리 캐시에서 찾아 곧바로 실행단계로 넘어간다.
profile
도광양회(韜光養晦) ‘빛을 감추고 어둠속에서 힘을 기른다’

0개의 댓글