database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41938 게시물 읽기
No. 41938
대량 데이터 SQL 튜닝 및 병렬처리 활용 방법[DB 튜닝 및 Parallel 처리]
작성자
조장복(cjb1609)
작성일
2023-03-21 10:52
조회수
516

병렬처리에 관련된 파라미터 설명[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

[Top]
No.
제목
작성자
작성일
조회
41941ORACLE DB SQL 쿼리 튜닝-1번째[DB 튜닝]
조장복
2023-03-21
461
41940ORACLE DB SQL 쿼리 튜닝-1번째[DB 튜닝]
조장복
2023-03-21
706
41939ORACLE DB SQL 쿼리 튜닝[DB 튜닝]
조장복
2023-03-21
616
41938대량 데이터 SQL 튜닝 및 병렬처리 활용 방법[DB 튜닝 및 Parallel 처리]
조장복
2023-03-21
516
41937병렬처리(Parallel Processing) 관련 사항[병렬 Parallel 처리]
조장복
2023-03-21
8631
41936Oracle 온라인 백업중 HA Failover가 실패하는 이유 및 조치 방법[DB 복구]
조장복
2023-03-21
390
41935SQL 쿼리에서 인덱스 컬럼이 조건절에 없을때 인덱스 컬럼을 만들어서 검색속도 개선[DB 튜닝]
조장복
2023-03-21
522
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다