문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
study:oracle:datadb:1week_2 [2010/05/06 15:43] ahmax vol |
study:oracle:datadb:1week_2 [2010/05/06 16:34] ahmax |
||
---|---|---|---|
줄 35: | 줄 35: | ||
- PGA버퍼에서 찾을 수 없다면 다시 다른 블록을 SGA에 액세스하여 새로운 블럭을 담고 위의 처리를 반복수행한다. | - PGA버퍼에서 찾을 수 없다면 다시 다른 블록을 SGA에 액세스하여 새로운 블럭을 담고 위의 처리를 반복수행한다. | ||
- 리프블록에서 액세스한 로우가 처리범위를 넘으면 처리를 종료한다. | - 리프블록에서 액세스한 로우가 처리범위를 넘으면 처리를 종료한다. | ||
- | + | === ROWID의 구성 | |
- | | + | |
* rowid라는 가상 컬럼에 저장된다. | * rowid라는 가상 컬럼에 저장된다. | ||
* Single row access를 위한 row 고유한 주소 | * Single row access를 위한 row 고유한 주소 | ||
줄 45: | 줄 44: | ||
==== 2.1.2 B-tree 인덱스의 조작(Operation) ==== | ==== 2.1.2 B-tree 인덱스의 조작(Operation) ==== | ||
- | * **인덱스 생성(Creation)** | + | ===가.인덱스 생성(Creation)=== |
{{: | {{: | ||
- 테이블을 액새스하여 정렬을 수행. | - 테이블을 액새스하여 정렬을 수행. | ||
줄 55: | 줄 54: | ||
* 위와 같은 방법으로 인덱스가 저장되기 때문에 인덱스 블럭에 많은 로우를 담게 될 경우 리프 블럭 감소, 브랜치 블럭 증가 둔화(블럭의 깊이 감소) | * 위와 같은 방법으로 인덱스가 저장되기 때문에 인덱스 블럭에 많은 로우를 담게 될 경우 리프 블럭 감소, 브랜치 블럭 증가 둔화(블럭의 깊이 감소) | ||
- | | + | |
- | * 큰 블럭 사이즈(DB_BLOCK_SIZE)를 지정. | + | == 인덱스 블록에 보다 많은 로우를 담기 위해 취할 수 있는방법 == |
- | * PCTFREE를 최소로 정의. | + | * 최대한 인덱스 컬럼의 수를 줄인다. |
- | * 압축을 활용하는 방법 | + | |
+ | | ||
+ | | ||
CREATE INDEX ord_customer_idx | CREATE INDEX ord_customer_idx | ||
줄 65: | 줄 66: | ||
: | : | ||
- | * **인덱스 블럭의 분할(SPILT)** | + | ===나.인덱스 블럭의 분할(SPILT)=== |
* 인덱스 로우는 정렬이 되어 저장 되어야 하는 이유 때문에 이미 생성된 구조에 새로운 로우가 삽입되면 기존의 위치에 파고 들어가는 문제 발생 | * 인덱스 로우는 정렬이 되어 저장 되어야 하는 이유 때문에 이미 생성된 구조에 새로운 로우가 삽입되면 기존의 위치에 파고 들어가는 문제 발생 | ||
{{: | {{: | ||
줄 73: | 줄 74: | ||
: | : | ||
- | * **데이터의 삭제 및 갱신** | + | ===다.데이터의 삭제 및 갱신=== |
* 데이터를 삭제했을 경우 테이블의 로우는 제거되지만 인덱스의 로우는 삭제되었다는 표시(flag)만 추가된다.(저장공간낭비와 스캔시 액세스 블럭 증가) | * 데이터를 삭제했을 경우 테이블의 로우는 제거되지만 인덱스의 로우는 삭제되었다는 표시(flag)만 추가된다.(저장공간낭비와 스캔시 액세스 블럭 증가) | ||
* 한 리프 블럭이 모두 삭제 되었을 경우 브랜치 블럭에 해당 리프 블럭을 가리키는 로우도 삭제 표시가 된다. | * 한 리프 블럭이 모두 삭제 되었을 경우 브랜치 블럭에 해당 리프 블럭을 가리키는 로우도 삭제 표시가 된다. | ||
줄 80: | 줄 81: | ||
* 데이터처리(DML)가 많이 수행되는 테이블은 정기적으로 재생성을 할 필요가 있다. | * 데이터처리(DML)가 많이 수행되는 테이블은 정기적으로 재생성을 할 필요가 있다. | ||
: | : | ||
- | * ** 인덱스를 경유한 검색** | + | ===라.인덱스를 경유한 검색=== |
{{: | {{: | ||
* lmc는 브랜치 블럭의 첫 번째 로우의 값보다 적은 값을 갖는 하위의 블럭의 주소정보(dba: | * lmc는 브랜치 블럭의 첫 번째 로우의 값보다 적은 값을 갖는 하위의 블럭의 주소정보(dba: | ||
줄 93: | 줄 94: | ||
: | : | ||
- | === B-tree인덱스의 문제점 === | + | === 마.B-tree인덱스의 문제점 === |
* B-TREE인덱스에서는 실제 컬럼 값을 인덱스에도 보관하고 있어야 한다는 점이 대용량 데이터를 관리할 때 부담이 된다. | * B-TREE인덱스에서는 실제 컬럼 값을 인덱스에도 보관하고 있어야 한다는 점이 대용량 데이터를 관리할 때 부담이 된다. | ||
* B-TREE인덱스 컬럼값의 분포도가 좋아야 한다는 점 | * B-TREE인덱스 컬럼값의 분포도가 좋아야 한다는 점 |