"오라클 테이블 생성"의 두 판 사이의 차이
DB CAFE
(→PCTUSED) |
(→FREELIST) |
||
38번째 줄: | 38번째 줄: | ||
==== FREELIST ==== | ==== FREELIST ==== | ||
− | + | {{틀:알림 | |
− | # FREE 블럭을 리스트 형태로 관리 | + | |내용=테이블로 데이터를 INSERT 하기 위하여 미리 할당하는 프리 블록의 리스트 수를 지정. |
+ | }} | ||
+ | # FREE 블럭을 리스트 형태로 관리. | ||
# INSERT 작업이 많이 발생하는 테이블,인덱스에 이값을 증가 시켜 빈 블럭을 할당받기 위해서 대기 하는일이 없도록 해야함. | # INSERT 작업이 많이 발생하는 테이블,인덱스에 이값을 증가 시켜 빈 블럭을 할당받기 위해서 대기 하는일이 없도록 해야함. | ||
2024년 6월 16일 (일) 23:02 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 오라클 테이블 생성 , CREATE TABLE[편집]
The syntax to create a table is:
CREATE TABLE [table name]
( [column name] [datatype], ... );
For 예시:
CREATE TABLE employee
(id int, name varchar(20));
1.1 BLOCK SIZE[편집]
- 8K
- 기본 사이즈
- 32K
- 평균 row size가 커서 8K사용중인 테이블에서 row migration , row chaining이 자주발생할경우
- 한번에 대량 i/o가 발생 하는 테이블인 경우
1.2 PCTFREE[편집]
assignment 블럭내에 행을 변경할때 발생 할 수 있는 행의 크기 증가에 대비하여 예약된 공간
- 디폴트는 10 퍼센트 - 블록의 10 퍼센트를 데이터 갱신을위한 빈 영역으로 남겨둠.
- default, 기본 => 10
- DML이 발생되지 않는 테이블, 백업용 압축테이블 => 0
- Update/Delete 가 빈번하게 발생되는 테이블 => 20
- 채번 테이블 => 90
1.3 PCTUSED[편집]
assignment 기존의 데이터가 수정이나 삭제등으로 PCTUSED보다 값이 작아지면 이 블록에 한하여 입력이 가능
- 재사용 되기 위해 필요한 블럭의 퍼센트
- 디폴트 60 - 사용된 영역이 40% 보다 작아져야 새로운 행을 삽입 가능.
- 입력/삭제가 자주 발생하지 않으면 => 90
- 수정이 자주 발생되면 => 40
1.4 FREELIST[편집]
assignment 테이블로 데이터를 INSERT 하기 위하여 미리 할당하는 프리 블록의 리스트 수를 지정.
- FREE 블럭을 리스트 형태로 관리.
- INSERT 작업이 많이 발생하는 테이블,인덱스에 이값을 증가 시켜 빈 블럭을 할당받기 위해서 대기 하는일이 없도록 해야함.
1.5 INITRANS 와 MAXTRANS[편집]
- INITRANS
- 데이터 블록에 동시에 접근 가능한 트랜잭션의 처리 갯수를 의미(미리 확보할 ITL entry수)
- 트랜잭션이 많이 발생하는 경우 MAXTRANS 까지 늘어나며, PCTFREE 로 확보된 영역에 추가 확장 됨
- MAXTRANS
- 데이터 블록에 접근 가능한 최대 트랜잭션 수를 의미
- 접근하는 트랜잭션 수가 MAXTRNAS 값을 초과하는 경우, 앞의 트랜잭션이 COMMIT 혹은 ROLLBACK 을 해야 다음 트랜잭션이 접근 가능
- 최대 255개
assignment INITRANS 를 크게 설정 하면?
- INITRANS 을 위한 슬롯도 블록에 공간을 차지하며, 트랜잭션이 많지 않은 경우 낭비를 하게 되므로 굳이 크게 설정할 필요 없음
2 -- 기본
10 ~ 20 -- 트랜잭션이 빈번하게 발생할것으로 예상되는 테이블
15 -- 로그성 테이블
30 -- 채번테이블
1.6 INITRANS 와 MAXTRANS[편집]
assignment INITRANS
- 데이터 블럭을 처음 사용하기 위해 포맷시 블럭헤더에 있는 itl slot을 몇개를 할당할지 지정하는 값
- 테이블 과 인덱스 생성시 지정 함.
- 초기값은 INITRANS의 값으로 정의되며 미리 확보할 ITL entry수를 의미한다.(테이블 생성시 initttans 기본값은 2 임)
- 최대값은 MAXTRANS 값으로 ITL Entry의 최대 수를 의미한다. (기본 255)
- 만약 모든 가용한 ITL이 사용중이고 새로운 ITL 슬롯을 동적으로 할당하기위한 PCTFREE 영역의 공간이 충분하지 않을때는 엔트리를 할당받지 못하여 TX Lock 경합이 발생하게 된다.
- - 이때는 ITL entry를 차지한 다른 트랜잭션이 커밋이나 롤백을 수행하여 ITL 슬롯을 재사용할 수 있을때까지 대기함
- - enq:TX allocate itl entry 대기 이벤트 발생
- 오라클은 row단위의 lock을 걸지만 일단 데이터의 Access시 블럭 단위로 엑세스 하므로 결국 block 단위의 lock이 필요하다.
assignment MAXTRANS
- 블럭헤더에 미리 할당한 itl slot 이 모두 사용중이라면 maxtrans로 지정된 개수 만큼 추가 itl slot을 할당 할수 있음.