728x90
인덱스
기본 구조
- 루트 블록
- 브랜치 블록
- 하위 노드 블록을 찾아가기 위한 Data Block Address를 갖는다.
- 리프 블록 : 가장 마지막 레벨의 블록
- 인덱스 키 컬럼, 주소 정보(ROWID)를 갖는다.
※ ROWID : 해당 테이블 레코드를 찾아가기 위한 주소 정보. 데이터파일 번호, 블록 번호, 로우 번호 같은 테이블 레코드의 물리적 위치 정보를 포함.
확장 ROWID 포맷
- 데이터 오브젝트 번호(6자리) : 데이터베이스 세그먼트를 식별하기 위해 사용되는 번호
- 데이터파일 번호(3자리) : 로우가 속한 데이터 파일 번호
- 블록 번호(6자리) : 해당 로우가 저장된 데이터 블록 번호
- 로우번호 (3자리) : 블록 내에서 각 로우에 붙여진 일련번호로서, 0부터 시작
## ROWID 확인
SELECT ROWID EXTENDED_FORMAT,
DBMS_ROWID.ROWID_TO_RESTRICTED(ROWID, 0) RESTRICTED_FORMAT,
DBMS_ROWID.ROWID_OBJECT(ROWID) OBJECT,
DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) FILE_NO,
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) BLOCK_NO,
DBMS_ROWID.ROWID_ROW_NUMBER(ROWID) ROW_NUMBER
FROM SCOTT.EMP E
WHERE EMPNO = 7698;
>>
EXTENDED_FORMAT RESTRICTED_FORMAT OBJECT FILE_NO BLOCK_NO ROW_NUMBER
------------------ ------------------ ---------- ---------- ---------- ----------
AAAF4MAAEAAAACUAAF 00000094.0005.0004 24076 4 148 5
----------------------------------------------------------------------------------
SELECT DBMS_ROWID.ROWID_TYPE('AAAM6PAAEAAAE2cAAA') EXTENDED_FORMAT,
DBMS_ROWID.ROWID_TYPE('00004D9C.0000.0004') RESTRICTED_FORMAT
FROM DUAL;
>>
EXTENDED_FORMAT RESTRICTED_FORMAT
--------------- -----------------
1 0
인덱스 탐색
- 수직적 탐색
: 수평적 탐색을 위한 시작 지점 찾기
루트 -> 리프 블록
(아래쪽으로 진행 ↓)
- 수평적 탐색
: Range Scan. 범위 스캔
인덱스 레코드 간 논리적 순서에 따라 리프 블록 스캔
(좌->우 / 우->좌 로 진행)
- 탐색 과정
- 수직적 → 수평적
루트 블록에서 시작
→ 찾고자 하는 값보다 크거나 같은 값을 만나면 바로 직전 레코드가 가리키는 하위 블록으로 이동 (수직적)
→ 이 과정을 반복하며 조건을 만족하는 첫 번째 블록을 찾는다.
※ 리프 블록이므로 해당하는 데이터를 찾거나, 해당하는 데이터가 없어 찾지 못하는 2가지의 경우만 있다. 찾으면 수평적 탐색 과정으로 넘어가고, 못 찾으면 인덱스 탐색을 마친다.
수직적 탐색을 통해 스캔 지점을 찾고 나면, 데이터가 더 나타나지 않을 때까지 리프 블록을 수평적으로 스캔한다
→ 조건절에 만족하는 데이터를 찾는 과정
→ 만족하는 데이터를 모두 찾고 ROWID 값을 얻는다.
→ ROWID를 이용해서 해당 테이블의 레코드에 접근한 후 필요한 다른 컬럼 값들을 읽는다. (인덱스 컬럼만 필요한 경우 생략)
http://wiki.gurubee.net/pages/viewpage.action?pageId=26739921
728x90
'Dev > Oracle' 카테고리의 다른 글
[Oracle] 인덱스 탐색 방식 (0) | 2022.06.21 |
---|---|
[Oracle] 결합 인덱스 (0) | 2022.06.21 |
[Oracle] 복구한 DB 원복 (0) | 2022.06.20 |
[Oracle] RMAN 복구 (0) | 2022.06.19 |
[Oracle] RMAN Backup (0) | 2022.06.17 |
댓글