안녕하세요?
사이베이스 왕초보입니다.
다름이 아니라..
select 한 결과를 sam파일로 떨어뜨리려고 하고 있습니다.
그런데 1천5백만건인데 2시간 정도 걸리네요.
그래서 select한 결과를 sam파일로 떨어뜨리는데 빠르게 하는 방법이 없는지 알고 싶습니다.
버퍼를 늘린다던지..
아니면 sam파일을 여러개로 분리해서 동시에 떨어뜨린다던지..
고수님들의 도움을 요청합니다.
꾸벅~
IQ인가요? ASE인가요?
view 만들어서 여러개로 떨구거나 아님 packet size 늘리고 large io cache늘리고~
지연님의 답변처럼 packet size / large io cache를 늘리는게 답일듯...
그런데 2시간이면 disk 가 많이 늦는 시스템 인듯..
write 되는 disk의 성능을 개선하는 것도 좋겠지요..
아니면 현재 사이베이스에서 사용하는 disk와는 다른 컨트롤러에
달린 disk에 write 하시던지!
이것은 IQ가 아닌 ASE 관련 내용 입니다.
IQ입니다. 제가 환경을 바꿀 수 있는 권한이 없습니다. 그래서 select한 결과를 view로 만들어서 동시에 여러개의 sam파일로 떨구는 방법을 알고 싶은데요. 혹시 예제를 통해서 알려 주실 수 있나요? 혹시 모르니까.. packet size 늘리고 large io cache 늘리는 방법도 알려주시면 더더욱 감사하구요..^^ 죄송합니다. 꾸벅~
2개의 세션에서 사용한다고 가정 (I/O bottlenect이 버틸수 있는 범위로 세션을 만들 수 있음)
where 절에 '특정한컬럼'을 가지고 2개의 파일로 구분할 수 있는 컬럼을 찾으세요. 예를 들어 테이블 건수가 100만건 이라면 1번 세션에서 50만건, 2번 세션에서도 50만건 이렇게 select 할 수 있는 컬럼 혹은 컬럼 조합을 찾으세요. 이렇게 컬럼의 조합을 where절에 적절해 하면 10개의 세션에서 각각 10만건씩 SAM 파일로 추출할 수 있습니다.
1번 세션
set temporary option temp_extract_name1='/디렉토리/파일명1';
set temporary option temp_extract_column_delimiter='|';
그외 temp_extract로 시작하는 다른 옵션
select * from aaa
where 특정한컬럼 < '50만건 값';
set temporary option temp_extract_name1='';
2번 세션
set temporary option temp_extract_name1='/디렉토리/파일명2';
where 특정한컬럼 >= '50만건 값';
1번 세션과 2번 세션을 동시에 수행하면 한번에 100만건 추출되는 시간의 절반으로 각각에서 50만건씩 데이터가 추출됩니다