Temporary Tablespace Group은 잘 알려지지 않는 오라클 기능 중 하나로, Oracle 10g에 추가된 기능이다.


일반적으로 temporary tablespace는 유저에게 지정하여, 특정 유저는 단 하나의 temporary tablespace만을 사용할 수 있었으나, Temporary Tablespace Group은 유저에게 임시 테이블스페이스 그룹을 지정하여 동시에 여러개의 임시 테이블스페이스를 사용하여 정렬 등의 작업 효율을 향상시키는 기능이다.



특징

  • 하나 이상의 temporary tablespace 구성
  • temporary tablespace로만 구성됨.
  • 명시적으로 생성하지 않고, 첫번째 temporary tablespace 할당되면 암시적으로 그룹이 생성되고,
  • 마지막 temporary table space 그룹에서 제거되면 삭제됨.


장점

  • 데이터베이스 레벨에서 여러 개의 default temporary tablespace 지정할 있다.

  • 사용자는 동시에 여러 세션에서 여러 개의 temporary tablespace 사용할 있다.

  • 단일 SQL 조작으로 여러 개의 temporary tablespace 사용하여 정렬할 있다.


->  하나의 임시 파일에 비해 여러 파일에 I/O 분산시킴으로써 정렬, hash join 등의 작업에 상당한 성능 향상을 기대할 수 있음



추가사항

  • temporary tablespace group에 추가 있는  temporary tablespace 의 개수 제한은 없다.
  • 하나의  temporary tablespace 는 하나의  temporary tablespace group에만 속할 있다.

  • temporary tablespace group 모든 정렬 문제를 개선한다.


예제



  • 기존에 생성된 임시 테이블스페이스를 그룹에 할당(그룹 생성)

ALTER TABLESPACE temp TABLESPACE GROUP temp_ts_group;


  • 새로운 임시 테이블스페이스를 생성하여 그룹에 추가

CREATE TEMPORARY TABLESPACE temp2

  TEMPFILE '/u01/app/oracle/oradata/DB10G/temp201.dbf' SIZE 20M

  TABLESPACE GROUP temp_ts_group;


  • 할당된 임시 테이블스페이스그룹을 조회할 수 있는 dba_tablespace_groups 딕셔너리 

SELECT * FROM dba_tablespace_groups;

GROUP_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

TEMP_TS_GROUP                  TEMP

TEMP_TS_GROUP                  TEMP2

2 rows selected.



그룹이 생성되면 테이블스페이스와 동일하게 그룹 자체를 유저나 디폴트 임시 테이블스페이스로 지정이 가능하다. 


  • 사용자에게 임시 테이블스페이스그룹을 할당

ALTER USER scott TEMPORARY TABLESPACE temp_ts_group;


  • 디폴트 임시 테이블스페이스로 그룹을 할당

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_ts_group;


  • 그룹에서 테이블스페이스 제거

ALTER TABLESPACE temp2 TABLESPACE GROUP '';


SELECT * FROM dba_tablespace_groups;

GROUP_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

TEMP_TS_GROUP                  TEMP

1 row selected.




★★★ 참고자료


아래 사이트는 temporary tablespace group과 하나의 임시 테이블스페이스 파일을 사용했을때의 성능 비교 자료를 제공.

https://dbakevlar.com/2011/08/warp-speed-with-temp-tablespace-groups/


요약한다면... 

temporary tablespace group은 하나의 temporary tablespace 만을 사용할때 보다 reads : 66% 성능향상, writes - 29% 성능향상이 됨.


※ temporary tablespace group을 구성할때 각각의 temporary tablespace 파일 크기를 동일하게, 위치는 다르게  위치시키는게 I/O 분산 효과가 더 좋다.


+ Recent posts