- 2일차 실습 때 DISK 사용량을 눈으로 확인하기 위해
index를 사용하게끔 힌트를 주고 수많은 랜덤엑세스를 발생시키게 만들면 의도대로 되지 않을까?
- 실습해보기
- 옵티마이저 ⇒ 최적화 엔진(핵심엔진)
- SQL엔진 ⇒ 실행엔진
- 그림1-11 (테이블스페이스, 세그먼트, 익스텐트, 블록 모두 표현)
- 생성된 테이블 마다 (인덱스마다, 파티션마다, LOB마다) 세그먼트 존재
- 한 세그먼트에 있는 익스텐트는 하나의 테이블이 독점한다
- 한 익스텐트에 있는 블록은 하나의 테이블이 독점한다
- 한 블록에 저장된 레코드는 모두 같은 테이블 레코드다
- Dictionary
- 디스크측)
데이터 딕셔너리(테이블 구성 정보, 인덱스 구성 정보, 시퀀스, 사용자, 권한 등)
- 메모리측) 위 데이터딕셔너리의 변경사항을
딕셔너리캐시 에 저장하고 데이터파일에 읽고씀
유사한 용어에 관해 질문있습니다
- Logical Read
- DBA에 대응하는 해시값에 해당하는 체인에 대해 래치락을 얻어 체인에 접근하고
- 체인을 탐색하여 원하는 블록을 찾는 읽기
- 버퍼(헤더)Pinning
- 동일 프로세스의 한 데이터베이스 CALL 내에서 앞서 읽었던 블록의 블록헤더(=버퍼헤더)를 기억해뒀다가
- Logical Read과정을 생략하고 바로 블록을 얻는 읽기
SQL단계와 실행순서
- parse, excecute, fetch
- 왜 excecute(실행) 횟수가 1회를 초과하는 경우가 존재할 수 있을까
커서 개념
- DBMS
- SGA의 Library Cache에 캐싱돼 반복 재사용되는 최적화된 SQL (프로시저)의 실체는 사실
Shared SQL Area(공유커서)
- PGA의
private SQL Area(세션커서)
- 결과집합중 fetch가 일어난 곳 까지 표시하는 깃발
- 이 깃발이 EOF를 가르키면 FETCH를 전부 마침
- 어플리케이션
- 커넥션으로 알려진
application Cursor(어플리케이션커서)
논리적I/O 와 물리적I/O
-
물리적I/O 양이 논리적I/O에 포함되는 이유
벤다이어그램 그림으로 표현해보기