- segment : 저장공간을 가진 Object
ex) table, index <-> view
- extent : 공간의 단위, 연속된 Block 의 집합
- block : I/O 의 최소 단위
오라클 Record 는 가변!
* Block 은 아래서부터 데이터가 생긴다.
- Row Directory : block 의 위치를 알려주는 Pointer
=> 모든 데이터 파일, 파일에 고유한 번호를 붙인다.
=> Row ID 구성요소 : 데이터 파일 번호, 데이터 파일 내 Block 의 번호, Block 내의 Record 번호
(Record와 Row는 동일한 개념) 마치 컬럼과 필드가 같은 개념인 것처럼...
* SELECT 되는 구조
Server Process 는 SQL을 3단계에 거쳐 처리한다.
=> Parsing(Semantic Check, semantic check, Execution Plan 수립(옵티마이저가 수행)), Execution, Fetch
* 옵티마이저 : SQL을 가장 빠르고 효율적으로 수행할 최적(최저비용)의 처리경로를 생성해 주는 DBMS 내부의 핵심엔진
* Index Scan 및 Full Table Scan 의 특징
- Index Scan : One Block I/O (데이터의 Row ID를 알기 위해 Index를 사용한다) , 2차 검색, Random Access
- Full Table Scan : N block I/O (DBA가 Setting 하기 전에는 기본적으로 N = 16, 한번에 여러개를 읽는다), 1차 검색, Sequential Access
=> WHERE 절이 있는 모든 쿼리는 Index Scan, Full Table Scan 이 적용된다.
- Logical Read : 메모리에서 읽어오는 것 (메모리상에 내가 필요한 데이터가 존재할 경우 Cache hit / 없을 경우 Cache miss)
- Physical Read : 파일 또는 디스크에서 읽어오는 것 (데이터 파일), Block 을 통째로 읽어오는 것
※ CPU는 DISK 에 있는 데이터를 수정할 수 없다. Memory 로 올라와야 CPU 로 가져와서 연산 가능하다. (이건 컴퓨터 구조의 내용임)
따라서 동일한 데이터를 2번 보거나 이미 메모리에 올라와있는 데이터를 실행할 경우에는 Soft Parsing 및 Logical Read 를 하기 때문에 빠르게 실행된다.
* Block 사용의 효율성
빈번한 DELETE 나 UPDATE 가 발생할 경우 Block 의 빈 공간이 생기게 되면 바로바로 채워지지 않는다.
Block 안의 공간활용도가 떨어지면, Disk 저장공간의 낭비뿐만 아니라 전체 컴퓨터 Resource 를 많이 사용하게 된다.
따라서 테이블과 인덱스의 Reorganization (재구성)이 필요하다. (보통 대기업에서 함)
=> Reorganization 란 block 의 빈공간이 생기지 않도록 비어있는 Block 들을 모아 촘촘히 채워준다..
모든 DBMS 는 뭔가를 변경하기전 Redo(Recovery), Undo(Rollback 명령어) 안전장치를 한다.
commit이 완료되었다는 뜻은.. 변경된 Block을 write 하기엔 성능상의 문제 발생으로 Redo Log Buffer Cache File(메모리상 존재) 을 Redo Log File(디스크상 존재) 에 바로 덤프하는 것 => 속도가 빠름
* Log Switch => https://m.blog.naver.com/siamsunset0/130180543865
* SCN(System Change Number) : DBMS 상에서 변경될 때 마다 SCN 번호를 증가시킨다.
Rollback 의 근본원리 찾아보기 !
DBA_ : DBMS 내에 존재하는 모든
ALL_ : Accessible 가능한 거 모든
USER_ : User 가 소유한 모든
참고 : https://runtoyourdream.tistory.com/145
DESC DICT
SELECT * FROM DICT;
=> DICT에서 PARTITION 관련 System Catalog 정보 조회
=> DICT에서 SQL 관련 System Catalog 정보 조회
* 오라클 12c 신개념
- CDB : 하나의 DB를 컨테이너로 보고 그 컨테이너를 담을 수 있는 DB
- PDB : CDB에 끼워넣을 수 있는(Pluggable) DB 즉, CDB안에 있는 DB
index 아키텍처는 마지막 시간에...
참고하기 좋은 사이트
'DBMS > Oracle' 카테고리의 다른 글
[Oracle] SQL 튜닝_4. SQL TRACE (0) | 2019.12.07 |
---|---|
[Oracle] SQL 튜닝_3. 성능 모니터링 (0) | 2019.11.30 |
[Oracle] SQL 튜닝_1. 데이터 처리방식에 따른 성능 (0) | 2019.11.16 |
[Oracle] 오라클(Oracle) 조인(JOIN) 문법 (0) | 2019.02.18 |
[Oracle] 오라클(Oracle) DB 계정 생성 및 삭제 권한부여 비밀번호 변경 방법 (0) | 2019.02.18 |
최근댓글