글수 64
안녕하세요..
염치 불구하고 여쭤볼께 있어서 이렇게 글을 남기네요...
제가 지금 대용량 DB를 구축하면서 100건씩 데이터를 insert후 commit하는 프로그램이 있는데요(데이터량이 엄청 많아요)
오라클 힌트로 append를 사용하고 table은 nologging으로 만들었습니다. 동시에 10개의 세션에서 insert를 하는 작업이고요
이럴경우 commit시 한개의 세션이 끝나야 commit를 기다리는 상태가 발생하는 것 같은데요(commit이 3초이상 걸리네요)
그래서 데이터 속도를 쫒아 갈수가 없어요. lock을 보면 DML/ trantion / curser bind라는 lock이 보이네요
두번째 방법으로는 append를 뺴고 동일한 방법으로 해봤는데요. commit시간의 차이가 없네요.
insert 및 commit속도를 빠르게 하는 방법은 없을까요??
redo_log size는 100M로 5개 group으로 되어 있습니다.
꼭 좀 알려주세요..^^



어떤버전인지 어떤 셋팅을 하시고 쓰시는지 제가 알 수 없어 대략적인 해결책 밖에 드릴 수가 없군요.
질문의 내용만 봐서는 문제가 생길 여지가 없어 보이는데 있는 것으로 봐서는assm tableSpace 입력해서 hot블록이 생기지 않게 하는 것이 1차 적인 해결방법일 것 같군요.
버전이 10g가 아니라면 로더를 이용한 directload나 파티션드 테이블을 10개로 만들어서 각각의 세션이 다른 테이블 스페이서의 데이터에 입력을 하게끔 하는 방법도 있습니다.
dw용 디비라면 아카이브를 꺼 놓고 작업하시는 것 맞지요? 그렇다면 비동기 커밋을 해보시는 것도 괜찮은 방법일 듯 합니다.
이래도 안되면 wait들 분석해 봐야 겠구요...