병렬처리에 관련된 파라미터 설명[DB 튜닝 및 Parallel 처리]
*.parallel_max_servers=16 : 결과 : CPU 수량 : 물리적 1장, 논리적 4개(4 quard 이닌까)
- PARALLEL PROCESSING 의 Parallel Query -> ORACLE 사용자를 위한 Tuning 실무-3 [참조, 296]
. 최소 CPU 수 : 4장 이여야 한다, 만약 CPU가 4장 이하 일때 Parallel 로 실행하게 되면 다른 Process 가 처리되지 않는다
. 데이터가 여러개의 디스크에 striping 되어 있을때 병렬처리에 유리
. 대량의 데이터 소트
. SELECT /*+ PARALLEL(EMP,4) */ deptno, SUM(SAL) FROM emp GROUP BY deptno;
-> 총 8개의 process가 작업
. Parallel processing은 전체 테이블 또는 파티션을 처리하거나 Local index scan 수행 시에 효과가 큼
. 적어도 한개의 Full-table scan을 지닌 SQL 쿼리
. INDEX FAST FULL SCAN 시
. Default Degree
-> 명시하지 않으면 PARALLEL_THREADS_PER_CPU 의 값에 의해 결정
-> PARALLEL_THREADS_PER_CPU = 2 (default) 이고 4개의 CPU를 가지고 있으면 병렬도는 8
. Parallel_Max_server 결정
-> (CPU_COUNT * PARALLEL_THREADS_PER_CPU * 2 * 5) <- 튜닝 메뉴얼 내용에 의하면
-> * 2 는 PGA_AGGREGATE_TARGET > 0 일 경우, 여기에서 5 는 결정된 수이다
- 대상 DB 파라미터 설정 내용
parallel_max_servers integer 160
parallel_min_percent integer 0
parallel_min_servers integer 0
parallel_threads_per_cpu integer 2
pga_aggregate_target big integer 1200M
db_file_multiblock_read_count integer 16
CPU 용량 : POWER6 1.65GHz*4(1), 물리적 1장, 논리적 4개 이다
- 따라서 설정은 2 * 4 로 한다, 2 * 4 * 5 = 40 이므로 160 이하이기 때문에 문제 없다
. 따라서 본 QUERY는 PARALLEL PROCESSING 의 Parallel Query 를 사용하여 db_file_multiblock_read_count 16개 Block을
1회의 I/O로 처리하여 처리 속도 향상
. PARALLEL PROCESSING 의 Parallel Query 으로 처리시
-> 사용 빈도가 높으면 PARALLEL PROCESSING 의 Parallel Query 을 적용하고, 사용빈도가 낮으면 적용하지 않기를 권함
. 향후 데이터 증가시 모든 테이블 full sacn으로 인하여 처리 속도가 더 떨어질 것으로 보임
. 설정은 2 * 4 = 8 중에서 1개는 코디네이터, 나머지 7개로 프로세싱 : 힌트(/*+ PARALLEL(D,7) */) 를 지정하여 병렬처리 ??????
==> *.parallel_max_servers=16 은 결론적으로 ???? ***********************************************
. Parallel_Max_server 결정에 의해서
-> (CPU_COUNT * PARALLEL_THREADS_PER_CPU * 2 * 5) = 16 * (2) * 2 * 5 = 160 (320)으로 되어야 하는데
(*.pga_aggregate_target=2671771648 으로 0보다 크므로)
parallel_min_servers integer 0
large pool size에 대한 계산은 다음 값에 의해서 결정된다.(즉, parallel 처리를 위해서는 large pool size가 지정되어야한다)
여기에서 sga_max_size = 982007880 지정되었으나, large_pool_size 는 0으로 풀렸다
- parallel_max_servers
- parallel_threads_per_cpu
- parallel_server_instances
- mts_dispatchers
- dbwr_io_slaves |