리스트 파티션과 속도 0 4 3,410

by 푸른기린 [Oracle 기초] list partition 파티션 속도 [2012.03.08 10:06:22]



안녕하세요.

오라클 강좌에서 list partition 을 찾아보고 따라해보았는데,
초보라 무작정 따라하다보니 궁금한점이 있어서 질문드립니다.

CREATE TABLE TABLE_PTN
(
......
)
TABLESPACE TS_M_D01
PARTITION BY LIST (SEX)

  PARTITION SEX_M VALUES ('1')
    TABLESPACE TS_M_D01
), 
  PARTITION SEX_F VALUES ('2')
    TABLESPACE TS_M_D01
)


위와 같이 성별을 구분하여 4개의 테이블을 파티션테이블로 생성하였습니다.
테이블당 평균 4천만건 정도의 데이터가 존재하는데, 

각 테이블에 남녀 데이터가 row로 존재하는것을
컬럼으로 만들기 위해 같은 테이블의 남자데이터와 여자데이터를 full outer join을 하여
모든 테이블들을 union all 하여 적재하는 과정을 진행합니다.



파티션 테이블 생성하기전 12시간 정도 걸리던 작업이
파티션 테이블로 만든후 현재 14시간정도 지났는데 데이터가 반정도 적재되었습니다.
네트웍 대역폭에 변동이 있어서 그런것 같은데, 이 부분은 곧 해결 될것 같은데
파티션 테이블 생성 말고 속도를 향상시킬 만한 방안이 있을까요?


조언 부탁드립니다.
좋은하루되세요.
by 마농 [2012.03.08 10:34:26]

가장 적절한 것은 SQL 튜닝입니다.
다음 대량작업의 경우 병렬처리, 인덱스 해제, 로깅 해제 등을 고려해야죠.

by 푸른기린 [2012.03.08 10:43:52]
 감사합니다. 마농님 많은 도움이 되었습니다.
쌩초짜라 인덱스에 관해서 질문하나더 드리겠습니다.
이것저것 짜집기 하다보니 소스 테이블에 로컬 인덱스를 설정하였는데,
소스의 인덱스를 없애야 하는것인가요?

대량작업일 경우 인덱스가 오히려 성능저하를 가져오기때문인가요?

by 마농 [2012.03.08 10:57:15]

원본테이블은 상관 없을듯 하구요. 어차피 풀스캔 아닌지요?
대상테이블에 입력할때 인덱스가 성능에 방해가 되지요.
삭제후 입력하고 인덱스 재생성하셔야 빠를 듯.
테이블을 Full Outer Join 하면 내부적으로 해당 테이블을 4번 읽습니다.
하고자 하시는 작업이 행을 열로 변환하시는 작업이라면?
11g 라면 Pivot 기능을 이용하시면 되고,
이하 버전이라면 Group By 하여 Min(Decode(sex, 1, 컬럼)) AS m 하시면 됩니다.

by 푸른기린 [2012.03.08 13:18:34]

다시한번 감사드립니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입