2014-02-25 5 views
3

플랫 파일에 2 천만 개 이상의 레코드를 스풀링해야합니다. 직접 선택 쿼리는 시간을 활용합니다. 데이터의 일부를 기반으로 병렬로 출력을 생성해야 할 필요성을 느낍니다. 즉, 데이터의 10 % 이상에 대해 각각 10 개의 선택 쿼리를 병렬로 수행해야합니다. 그런 다음 UNIX에서 정렬 및 병합하십시오.쿼리 스트림을 병렬 스트림으로 선택

나는 이것을하기 위해 rownum을 사용할 수 있지만 이것은 지루하고 정적이며 내 rownum이 변경 될 때마다 업데이트해야합니다.

더 좋은 대안이 있습니까?

+0

는 키워드 SAMPLE에 대해 읽어했다 (샘플링?) – SriniV

+0

이 같은 데이터를 쿼리하는 평행하게 생각하는 이유는 동일한 서버에서 동일한 네트워크 (또는 로컬)을 통해 단일 쿼리보다 빠른 것? – Arvo

+0

내 가정은 10 개의 레코드를 스풀링하는 10 개의 쿼리로 하나의 쿼리가 100 개의 레코드를 스풀링하는 것보다 빠르게 내 플랫 파일을 제공합니다. 내가 틀렸다면 여기에서 나를 정정하십시오. –

답변

0

SQL의 데이터가 아니라 다수의 스핀들에 걸쳐 퍼져 모든 하나 개의 디스크에, 그리고 IO 및 네트워크 채널은 현재 별도의 스트림으로 분할하여 경과 시간을 줄일 수 포화되지 않은 경우. 또한 처리량에 장애가되는 하나 이상의 원본 하드 드라이브에 임의 액세스를 도입 할 수 있습니다. 클러스터 시퀀스가 ​​아닌 다른 것을 읽으면 디스크 경합이 발생합니다.

여기에 최적의 시나리오는 각 파티션은 별도의 저장 (또는 아주 잘 스트라이프)에 있는지, 분할 수, 각 리더 프로세스가 파티션 경계에 정렬되는 소스 테이블이 될 것입니다.

관련 문제