본문 바로가기

IT 지식/DB

[SQL]ROWID

728x90
반응형

ROWID

 - 레코드 식별자(RID, Record Indentifier / ROWID)

 - DB에 존재하는 모든 row가 갖는 유일한 식별자_오라클에서만 존재

 - ROWID는 SELECT문을 이용하여 조회 가능, UPDATE, INSERT 불가능

 - Oracle에서 INDEX를 생성하기 위해 내부적으로 사용하는 Pseudocloumn으로 사용자가 임의로 변경, 삭제 불가능

 - 참조만 가능하며 데이터베이스에 값이 저장되지 않음

 - 물리적인 address를 가지고 있기 때문에 Single Block Access로 찾고자 하는 row를 찾을 수 있어 가장 빠른 Access 방법을 제공

 - 인덱스 검색 및 테이블검색 없이도 레코드를 찾을 수 있음, 작업 효율 향상

 

구성(10바이트)

 - 오라클 7에서는 6바이트(제한된 ROWID 포맷) : 파일번호, 블럭번호, 행번호 형식(A three-piece Format)

 - 오라클 8에서 10바이트(확장 ROWID 포맷) : Object와 Patition의 개념이 도입 - Data Object Number가 추가(A four-piece Format)

 - ROWID 형태 : OOOOOOFFFBBBBBBRRR

 - OOOOOO(6자리) : DATABASE SEGMENT(디스크를 저장하는 공간)를 식별하기 위한 DATA OBJECT NUMBER를 가진다. 해당 로우가 속해있는 오브젝트 번호

 - FFF(3자리) : TABLESPACE에 상대적인 DATAFILE NUMBER, 해당 로우가 속해있는 데이터 파일 번호

 - BBBBBB(6자리) : ROW를 포함하는 DATA BLOCK의 NUMBER, 해당 로우가 속해있는 데이터 파일의 데이터 블록 주소값

 - RRR(3자리) : BLOCK에서의 ROW의 SLOT, 데이터 블록 내에서 해당 로우의 주소값

 - DATAFILE : FILE_NO(데이터베이스의 유일한 절대적인 구성요소)와 RELATIVE_FNO(테이블스페이스에서 유일한 상대적인 구성요소)

 - DATA OBJECT NUMBER : 오브젝트(TABLE, VIEW, SEQUENCE, SYNONYM, INDEX 등등)의 고유번호 32bit, 

 - RELATIVE FILE NUMBER : 각각의 데이터 파일에 할당되는 번호 10bit

 - BLOCK NUMBER : 데이터 블록의 위치를 알려주는 22bit

 - ROW NUMBER : 오라클 블록의 헤더에 저장된 row direct slot의 위치를 알려주는 고유번호, 16bit, 임의의 로우의 위치를 알려줌


블록


1. 싱글블록 : 테이블읽을 때 index scam - Rowid로 찾아온다. 8kb

2. 멀티블록 : 테이블을 읽은 때 Full Scan 128kb=1MB

3. NL Join : Random 엑세스를 한다.  온라인성 조회일 때 사용, 테이블의 데이터가 많을 때 full scan하면 느려질 수 있음.

4. Random 인덱스 : index scan으로 왔다갔다 하면서를 데이터를 읽는다.

728x90
반응형

'IT 지식 > DB' 카테고리의 다른 글

[SQL]Join  (0) 2025.04.12
[SQL] Oracle  (0) 2016.03.18
[SQL] Procedure, Function, Package  (0) 2016.01.07
[펌]PK 가 없는 테이블에서 중복된 데이터 제거하기  (0) 2015.12.18
[SQL] 제약 조건  (0) 2015.11.15