VLDB 구현시 고려할 Oracle Block 에대한 Guide line
1) Oracle Block Size
Oracle database의 block size 는 system performance 에 굉장히 중요하다. 다음 섹션은 Oracle block size 를 결정하기 앞서 고려해야 할 몇가지
tarde-off 를 말할 것이다.VLDB 의 최적의 Oracle block size 는 4KB ~ 64KB 이다. 대부분의 일반적인 VLDB block size 는 아마도 8KB 이고 다음으로는 16KB 이다. 시스템상의 Oracle Server implementation 시 large memory object 의 가장 빠른 memory transfer 의 성능은 32KB Oracle block 과 (이론적으로) 64KB 로 부터 얻을 수 있다.
2) Reducing I/O Load
가장 어려운 VLDB Implementation 중에서 가장 중요한 특징은 엄청난 I/O load 이다. 큰 Oracle database block 의 사용은 이러한 I/O load 를 감소하기 위한 가장 간단한 기 술이다.
- I/O call overhead
큰 Oracle block 이 작은 Oracle block 보다 performance 잇점이 있다
- Index performance
Index 의 performance 는 B*tree 의 height 에 반비례한다.
Large Oracle block 은 좋은 search performance 를 제공하는 depth 가 깊지않고 넓은 index 를 보유하는 block 에 대하여 많은 key 의 storage 를 제공한다.
- Reduced chaining
Oracle Server 는 하나의 database block 에 적절하지않는 table, data cluster, hash cluster 들의 row들을 chaining 한다. Multi block 에 걸친 row piece 들의 chaining 은 multiple I/O 를 유발한다. 큰 Oracle block 은 row chaining 에 대한 가능성을 줄이므로서 system 에 대한 전체 I/O 의 수를 감소시킨다.
3) Improving Space Efficiency
Block 내에 저장된 data 량을 무시하고 각각의 Oracle block 은 약간의 overhead 를 저장하고 있다. 그러므로 database 에 저장된 block 이 작으면 작을수록 database 가 소비하는 전체 overhead 는 줄어들것이다. 그러나 large segment 에서 사용하는 larger Oracle block size 는 전체 database volume 의 2 ~ 6 퍼센트를 절약할수 있다. 이러한 절약은 performance, 운영상의 cost, 특히 backup/restore 시간에 상당한 이익을 가져 다 준다.
4) Preventing Concurrency Bottlenecks
큰 Oracle block 의 사용은 만일 physical database architect 가 initrans, maxtrans 의 parameter 들을 어떻게 사용하는지를 이해못한다면 concurrency bottleneck 의 위험을 증가시킨다.
Initrans 의 값은 block 내에 동시 transaction 이 예상되는 최대 transaction 수를 정해야한다.그러므로 database를 Oracle block 을 크게하여 rebuild 한다면 initrans 값도 증가해야한다.
부적절한 initrans, maxtrans 값을 설정하므로서 user session wait 를 야기시킬수 있다. 이러한 문제로 인하여 Oracle block 을 update 하는 session 은 다른 session 들이 read-consistent query 를 얻는것을 방해한다.
ITL (Interested Transaction List) 충돌은 v$lock 을 통하여 lock mode4(share) 에서 TX(Transaction enqueue) lock 에 대한 session waiting 을 알수있다. 이러한 문제는 Oracle 매뉴얼에서의 initrans, maxtrans 을 setting 하는 것을 통하여 해결될수 있다.
5) Trade-Offs
비록 보통보다 큰 Oracle block size 가 VLDB 에는 좋지만 아래의 조건들에 의하여 maxium Oracle block size 를 결정하도록 하라.
- Phsical I/O size
Oracle data block 의 size 는 phsical read 의 최대 size 를 넘어서는 안된다.
- Redo size
Oracle Server 의 redo log writer (LGWR) 은 hot backup mode 에 있는 tablespace 의 실행된 transaction 들에 대한 전체 Oracle block 을 online redo log file 에 write 한다. 그러므로 hot backup 시 system redo volume 을 줄이고자 한다면 Oracle database block size 를 제한해야 한다.
- Memory copy size
만일 Oracle block size 를 단일 operation 을 지원하는 operationg system, hardware architecture 의 memory 의 양보다 큰값을 지정하였다면 SGA 내의 large block 을 manipulating 과 관련되어 CPU load 는 증가할것이고 performance 는 감소할것이다.
- Concurrency limitations
Initrans, Maxtrans 의 최대허용치는 255 이다. 하나의 block 에 255 concurrent transaction 이 발생하면 결국 latch contention 이 매우 심할것이며 pctfree 를 증가시켜야 한다.
원본출처 : http://www.xpert.co.kr/main/jsp/ArticleRead.jsp?xid=oracle&id=31455&tpl=0&mode=u
|