글
13. 순환관계 처리 및 병렬처리 기법
먹고는 살아야지;;;
2009/01/11 23:31
1. 순환 관계 처리
1) 데이터 모델링
2) Self Join 의 활용
emp 테이블의 경우 매니저에 대한 정보를 다시 emp 테이블에서 구하는 순환 관계의 테이블
2. CONNECT BY 절
1) Connect By 절을 통한 순환 관계의 전개
2) Connect By 절을 통한 순환 관계의 전개
3. 복잡한 or 조건 처리
1) 복잡한 OR 조건 사용시 FTS 사용 문제
2) OR 조건을 풀어 사용하면...
※ 병렬 삽입의 경우 테이블이 파티션 되어 있느냐 아니냐에 따라서 수행 방식이 다름
non-partiton : 각각의 병렬 서버 프로세스가 next 를 참조하여 임시 작업을 위한 temp segment 를 생성해서 사용했다가 작업이 끝나는 시점에 하나의 테이블로 합쳐짐
partiton : 파티션 테이블의 경우, 각 파티션 마다 한 개의 삽입 프로세스가 할당되고 해당 파티션에 데이터를 저장.
2) 병렬 질의 예제
- 분산 질의 사용 이전
- 분산 질의 사용시
※ 직렬 쿼리와 분산 쿼리의 차이점
fetch 의 disk 나 query 건수는 변화가 없음. 그러나 fetch 의 elapsed time 이 18.22 에서 6.46으로 줄었음.
- 이유 : 세개의 parallel query 로 나누어 작업했기 때문
위의 sql 처럼 full table scan, hash join, 데이터 건수가 많은 경우는 parallel query 가 유리
3) 병렬 insert 예제
parallel insert
: partitioned/non-partitoned table 모두에 적용할 수 잇음
- 병렬 질의 사용 이전
- 병렬 질의 사용 이후
5. 이것만은 꼭!!!
1) 데이터 모델링
2) Self Join 의 활용
emp 테이블의 경우 매니저에 대한 정보를 다시 emp 테이블에서 구하는 순환 관계의 테이블
2. CONNECT BY 절
1) Connect By 절을 통한 순환 관계의 전개
2) Connect By 절을 통한 순환 관계의 전개
더보기
3. 복잡한 or 조건 처리
1) 복잡한 OR 조건 사용시 FTS 사용 문제
더보기
2) OR 조건을 풀어 사용하면...
더보기
4. 병렬(PARALLEL) 처리
1) 병렬처리의 정의와 목적
한 개의 SQL 문장을 여러개의 프로세스들로 나누어 동시에 실행시킴으로써 성능 향상을 기하는 방법
목적
- 큰 테이블을 join, scan, partitioned table/index scan 할 경우
- 큰 인덱스나 테이블을 생성하는 경우
- 대량의 insert, update, delete 처리하는 경우
- 대량의 데이터를 처리하는 경우
※ 병렬 삽입의 경우 테이블이 파티션 되어 있느냐 아니냐에 따라서 수행 방식이 다름
non-partiton : 각각의 병렬 서버 프로세스가 next 를 참조하여 임시 작업을 위한 temp segment 를 생성해서 사용했다가 작업이 끝나는 시점에 하나의 테이블로 합쳐짐
partiton : 파티션 테이블의 경우, 각 파티션 마다 한 개의 삽입 프로세스가 할당되고 해당 파티션에 데이터를 저장.
2) 병렬 질의 예제
- 분산 질의 사용 이전
- 분산 질의 사용시
※ 직렬 쿼리와 분산 쿼리의 차이점
fetch 의 disk 나 query 건수는 변화가 없음. 그러나 fetch 의 elapsed time 이 18.22 에서 6.46으로 줄었음.
- 이유 : 세개의 parallel query 로 나누어 작업했기 때문
위의 sql 처럼 full table scan, hash join, 데이터 건수가 많은 경우는 parallel query 가 유리
3) 병렬 insert 예제
parallel insert
: partitioned/non-partitoned table 모두에 적용할 수 잇음
- 병렬 질의 사용 이전
- 병렬 질의 사용 이후
5. 이것만은 꼭!!!
더보기