본문 바로가기
컴퓨터/Oracle

[Oracle]Multi Block Tablespace 오라클 멀티블락 테이블스페이스

by TEATO 2014. 7. 24.
반응형

[Oracle]Multi Block Tablespace 

오라클 멀티블락 테이블스페이스


데이터블락은 기본적으로 8k로 사이즈가 정해져 있는데요

SHOW PARAMETER BLOCK 이라는 명령어로 BLOCK정보를 볼 수 있습니다.

DB_BLOCK_SIZE를 보면 8192BYTE , 8K로 되어있죠

그밑에 DB_FILE_MULTIBLOCK_READ_COUNT는

풀테이블 스캔할때 한번에 128개의 블락을 읽을 수 있다는 뜻입니다.


 9i부터는 블락사이즈를 테이블스페이스마다 다르게 지정할 수 있는데요

블락사이즈를 크게하거나 작게하면 장점 단점이 어떻게 될까요.

 데이터블락사이즈가 작으면 그만큼 낭비하는 헤드부분이 많아지고 

대량의 데이터를 읽을때 많은 I/o를 일으키므로 성능이 안좋아질수도 있습니다.

 블락사이즈를 크게한다면 I/o가 집중적으로 발생할 문제가있습니다.

 때문에 상황에 잘 맞게 사용하는 것이 중요한데

OLTP(온라인, 소량의 데이터를 자주엑세스하는 환경인덱스검색을 자주하는환경)에서는 

데이터블락이 작은것이 효율적이고,

DW,OLAP환경(대량의데이터 FULL SCAN)일때는 데이터블락을 크게하는것이 좋습니다.



위에서 데이터블락사이즈가 8K인것을 확인했는데요

블락사이즈를 4K로해서 테이블스페이스를 만드는 쿼리를 날리자 에러가납니다.

이유는바로 블락사이즈에 맞게 메모리의 블락사이즈도 설정해줘야 합니다.

테이블스페이스의 블락사이즈가 4K인데 메모리의 블락사이즈는 8K이면 

블락간에 서로 데이터를 줄때 문제가 있을 수 있겠죠. 서로 일치시켜야합니다.


SHOW PARAMETER CACHE_SIZE를 조회해보면 

DB_2K_CACHE_SIZE 4K 8K 16K 등... 이런 파라미터들을 볼 수 있습니다.

전부 0으로 되어있죠. 

블락사이즈가 4K인 테이블스페이스를 만들려면

DB_4K_CACHE_SIZE가 필요합니다.


ALTER SYSTEM SET db_4k_cache_size = 4m 으로 4M를 할당해 줫습니다.


알아서 적절히 조절해서 32m를 할당해 줬네요.


이제 블락사이즈가 4k인 테이블 스페이스를 만들어 보니 잘 만들어집니다.


DBA_TABLESPACES를 조회해보면 각테이블스페이스의 블락사이즈를 확인할 수 있습니다.

방금 생성한 테이블스페이스는 4K로 되어있는 것을 확인 할 수 있습니다.




반응형

댓글