테이블이나 인덱스같은 저장공간의 데이터블록에 설정 가능한 옵션입니다.
INITRANS 와 MAXTRANS
* INITRANS
1. 데이터 블록에 동시에 접근 가능한 트랜잭션의 초기 수를 의미합니다.
2. 트랜잭션이 많이 발생하는 경우 MAXTRNAS 까지 늘어나며, PCTFREE 로 확보된 영역에 추가 확장됩니다.
* MAXTRANS
1. 데이터 블록에 접근 가능한 최대 트랜잭션 수를 의미합니다.
2. 접근하는 트랜잭션 수가 MAXTRNAS 값을 초과하는 경우, 앞의 트랜잭션이 COMMIT 혹은 ROLLBACK 을 해야 다음 트랜잭션이 접근 가능합니다.
그렇다면 INITRANS 를 많이 설정해도 되지 않을까 라는 생각을 하게 되는데,
INITRANS 을 위한 슬롯도 블록에 공간을 차지하며, 트랜잭션이 많지 않은 경우 낭비를 하게 되므로 굳이 크게 설정할 이유는 없습니다.
PCTFREE 와 PCTUSED
* PCTUSED
1. 블록 사용량이 설정된 값 이하로 내려가는 경우 블록을 재사용 합니다.
* PCTFREE
1. 블록에 저장된 데이터의 크기가 증가할 것에 대비하기 위한 여유 공간을 설정합니다.
2. 이 공간에는 INITRANS 에서 증가되는 슬롯도 포함됩니다.
사진으로 설명을 같이 해보겠습니다.
* 사진 1
블록의 90 % 가 사용되고 있는 상태입니다.
이 때, 블록의 데이터가 증가하게 되면 다음 블록으로 넘어가는 Row Migration 이 발생합니다.
* 사진 2
블록에 저장된 데이터가 삭제되어 블록의 50 % 정도만 사용하고 있습니다.
이 때, 다시 바로 블록을 사용할 수도 있지만 PCTUSED 값의 설정에 의해 사용률이 40 % 이하로 떨어질 때 까지 이 블록은 사용되지 않습니다.
* 사진 3
블록의 데이터가 계속 삭제되어 40 % 정도만 사용하고 있습니다.
이 때에는 블록이 다시 재사용 할 수 있는 상태로 설정됩니다.
그렇다면 PCTUSED 값을 높게 설정하여 낭비되는 공간을 줄이면 좋지 않을까?
높을 경우 공간활용 측면에서는 좋을 수 있지만,
데이터 블록이 자주 재활용 되면서 처리 비용이 증가하게 되고, 한 블록에 연속된 관련있는 데이터들이 들어있지 않게 됩니다.
'Database > 개념' 카테고리의 다른 글
[DATABASE] 데이터베이스 스캔방식 설정으로 쿼리 응답속도 높이는 방법 알아보기 (0) | 2018.08.17 |
---|---|
[DATABASE] 데이터베이스 정규화 1NF, 2NF, 3NF, BCNF, 4NF, 5NF 알아보기 (1) | 2018.06.18 |
[DATABASE] 데이터베이스 OLAP 과 OLTP 의 차이점, 그리고 DW 의미 알아보기 (0) | 2018.05.26 |
[DATABASE] 데이터베이스 분산트랜잭션, XA 트랜잭션 의미 알아보기 (0) | 2018.01.25 |
[DATABASE] 데이터베이스 속도와 처리량 Latency 와 Throughput 의미 파악하기 (0) | 2018.01.22 |