a. Oracle에서 Table은 Data저장 영역의 기본단위이다.
b. 선택적으로 Table의 각 Column에 규칙을 정할수 있는데
이를 Constraints(무결성제약조건)
이라고 한다.한예로 Not Null은 무결성제약조건 입니다.
c. Cluster화되지
않은 Table을 작성할때 Oracle은 Table의 향후 Data를 보관하기위해
TableSpace에 Data Segment를 자동으로
할당한다.
Data Segment에 대한 저장영역 매개변수를 설정하여 (initial, next parameter등) Data
Segment에 대한 할당된영역(extents)을 제어할수 있다.
Data Segment에 대해 pctfree와 pctused를
이용하여 Data Block의 빈영역에 대해 제어할
수도 있다.
d. 전체행을 단일 Data Block에 Insert할수 있다면
Oracle은 행을 하나의 행조각으로 저장하
나 전체행을 단일 Data Block에 Insert할수 없다면 기존 행을 갱신하여 행이
Data Block의 크기를
증가시키는 경우(Update된 Record가 이전의 Record보다 Size가 커지는 경우) Oracle은
여러 개의
행조각을 사용하여 Data를 저장한다. Oracle이 하나의 행을 두개이상의 행조각으로 저장하는 경우
Block을 통해
Chain화 되며, 체인화된 행조각은 부분의 RowID를 이용하여 서로 체인화 된다. 또한
체인화에 관계없이 각각의 행조각은 행/열
전체또는 일부에 대한 행 헤더 및 Data를 포함한다.
e. 행 헤더는 행조각,(체인화된 행조각의 경우)체인화, 행조각의
열,(Cluster인경우)클러스터
키등을 포함한다.
하나의 Block에 완전히 포함된 Cluster화 되지않은 행에는 적어도 3
Byte의 행헤더가 있으며,
행헤더 정보 다음에 열길이와 Data가 포함된다. 열 길이는 250 Byte이하를 저장하는 열의 경우
1 Byte,그이상인경우 3 Byte가 필요하며 열 Data에 선행한다.
열 Data에 필요한 영역은 Data Type에 따라
틀리며, 가변길이인 경우엔 영역은 증가또는 감소할수
있다.영역을 보존하기 위해 Null은 열길이(0)만을 저장한다. Oracle은
Null Column에 대한
Data를 저장하지 않으며 후행하는 Null의 경우 행헤더가 새로운 행의 시작을 나타내므로 열길이를
저장하지 않는다.(예를들어 Table의 마지막세개의 Column이 Null인 경우 열에 정보를 저장하지
않는다.)
또한
각각의 행은 Data Block헤더의 행 Directory에 2 Byte를 사용한다.
f. Column순서는 Table의 모든
행에 대해 동일 하다.일반적으로 열은 Create Table명령문에
나열된 순서대로 저장되지만 꼭 그렇지는 않다. 예를들어 Long
Data Type의 Column이
있는 Table을 Create하는 경우 항상 이 Column을 마지막으로 저장한다. 또한 alter
table
등의 명령으로 Column을 Add하는 경우 새로운 Column을 마지막에 추가한다.
일반적으로 행이 적은 영역을
차지하도록 Null을 자주 포함하는 Column을 마지막에 두
는 것이 좋다 만약 Table이 Long Column을 포함하면 Long
Column이 마지막에 위치 하
므로 이러한 이점을 살리기 힘들다.
g. ROWID는 각각의 행조각을 위치나 주소로 식별한다.
일단 행조각에 ROWID를 부여 하
면 행조각은 IMPORT 및 EXPORT Utility를 사용하여 행을 삭제할 때까지 ROWID를
보유 합니다.
행의 Cluster Key값이 변경되면 행은 유일한 ROWID를 유지하면서 새로운 값에 대한 추가
포인터
ROWID를 얻는다.
h. Null은 행의 열에 값이 없음을 나타내는데 Data값을 가진 열사이에 위치하는 경우 Null
은 열길이(0)을 저장하는데 1 Byte가 필요함
[Table생성 예제]
create table test
(
id char(3) not null,
name varchar2(12) null,
addr
varchar2(50) null,
constraint pk_test (id) primary key
using index
pctfree 10
pctused 60
storage
(initial 100k next 100k)
tablespace users_idx
)
storage
(initial 200k
next 200k
minextents 1
maxextents 121
pctincrease 0)
tablespace
users;
댓글 없음:
댓글 쓰기