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 Tutorials 17304 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 17304
V8I) PARALLEL QUERY & PARALLEL DDL 사용 방법
작성자
정재익(xlib)
작성일
2004-02-11 19:44
조회수
8,232

No. 18443

V8I) PARALLEL QUERY & PARALLEL DDL 사용 방법
========================================


Purpose
-------
이 문서에서는 Parallel Query와 Parallel DDL 에 대해 알아보도록 한다.


Explanation
-----------
Parallel Query 에 관한 일반적인 내용과 사용방법은 Note. 10801를 참조한다.

Parallel query 는 수행할 Query, DML, DDL문에 따라 parallelism decision 이 각각 다르다.
일반적인 Query의 경우, degree of parallelism이 가장 높은 table/index를 reference로 삼고
Parallel DML문이 subquery를 포함할 경우, subquery의 degree는 DML operation의 degree와 같게
그리고 Parallel DDL문이 subquery를 포함할 경우, subquery의 degree는 DDL operation의 degree와
동일하게 설정한다. 

1. Rules For Parallelizing Queries (SELECT)
1) Decision To Parallelize
다음의 조건이 충족되어야 parallelization이 가능하다.
'Parallel' hint(PARALLEL, PARALLEL_INDEX)가 명시되든지 schema object의 정의에 PARALLEL이
선언되어 있어야  하고 최소한 하나의 table에 대한 full scan 또는 여러 partition에 걸친 index range scan이
이루어져야 한다.

2) Degree Of Parallelism
Schema object 중 degree가 가장 높은 것을 reference로 채택하고 Hint와 parallel declaration이 공존할 경우,
hint가 우선순위이다.

2. Rules For Parallelizing UPDATE And DELETE
UPDATE/DELETE는 partitioned table에 대해서만 parallelism이 가능하다.
즉, Partition내 또는 nonpartitioned table에 대해서는 불가능하다.
Query와 마찬가지로 parallel option을 줄 수 있는데 Table definition에 PARALLEL절이 정의되면,
이는 query뿐만 아니라 DML문에도 적용된다.
1) Decision To Parallelize
해당 table이 PARALLEL spec을 갖고 있거나 DML문에 PARALLEL hint가 있는 경우에만 가능하다

2) Degree Of Parallelism
Query와 동일한 rule을 적용받는다.
Query와는 달리 UPDATE/DELETE에는 하나의 reference만이 존재한다.
Maximum degree of parallelism = # of partitions
하나의 partition에는 하나의 parallel server process만이 할당가능하다.

3. Rules For Parallelizing INSERT ... SELECT
SELECT/INSERT 대상의 table에 각각 hint 또는 declaration을 줄 수 있다.
1) INSERT 대상 table에 대해 PARALLEL이 declare되어 있거나 INSERT문에 hint가 있어야 한다.
결국 SELECT문과는 독립적으로 parallelism decision이 이루어진다.

2) Degree Of Parallelism
Insert hint > parallel declaration of insert > maximum query directive

4. Rules For Parallelizing DDL Statements
1) Decision To Parallelize
Syntax상에 PARALLEL declaration이 명시되어야 한다.

2) Degree Of Parallelism
PARALLEL절에 의해 결정된다.

5. Rules For Parallelizing CREATE INDEX, REBUILD INDEX, MERGE/SPLIT  PARTITION
Parallel CREATE INDEX or ALTER INDEX ... REBUILD
Parallel MOVE PARTITION or SPLIT PARTITION

6.  Rules For Parallelizing CREATE TABLE ... AS SELECT
1) Decision To Parallelize (Query)
Query상에 'parallel' hint가 명시되거나 CREATE문에 PARALLEL이 명시되거나, schema object 정의시
PARALLEL이 declare되어야 한다. 반드시 한 table에 대해 full scan이 이루어지거나 여러 partition에 걸친
index range scan이 이루어져야 한다.

2) Degree Of Parallelism (Query)
CREATE문의 PARALLEL절에 명시된 값을 이용한다.
PARALLEL절이 없을 경우 CPU 갯수를 default로 이용한다.

3) Decision To Parallelize (Create)
반드시 PARALLEL절이 있어야 하고 Create operation이 parallelize되면 Oracle은 가급적 scan도
parallelize한다.
Create operation이 parallelize되지 않더라도 scan을 parallelize할 수 있다.

4) Degree Of Parallelism (Create)
Create문의 PARALLEL절에 따른다. PARALLEL절이 없을 경우, CPU 갯수가 default값으로 지정된다.
SELECT문에 명시된 hint는 완전히 무시된다.

7. Satement level에서 수행 가능한 Parallel DDL 다음과 같다.
Nonpartitioned table/index에 대해 가능한 parallel DDL statements 이다.
 CREATE INDEX
 CREATE TABLE ... AS SELECT
 ALTER INDEX ... REBUILD
 Partitioned table/index에 대해 가능한 parallel DDL statements
 CREATE INDEX
 CREATE TABLE ... AS SELECT
 ALTER TABLE ... MOVE/SPLIT PARTITION
 ALTER INDEX ... REBUILD/SPLIT PARTITION

1) CREATE TABLE ... AS SELECT in Parallel
DSS application은 일반적으로 대량의 데이타를 요약해 놓은(roll up) summary table을 필요로 한다
Parallel execution을 통해 query 및 create operation을 parallelize할 수 있다

2) Recoverability And Parallel DDL
CREATE/ALTER TABLE/INDEX를 이용하여 summary table을 만들 경우,  NOLOGGING절을 이용하여
빠르게 table을 생성한 후 table이 속한 tablespace를 backup받아 놓는다 (undo/redo information을 생성하지 않는다)

3) Space Management For Parallel DDL
Storage Space For CREATE TABLE ... AS SELECT and CREATE INDEX
Table/index를 parallel creation하게 되면 각 parallel server process는 CREATE문의 storage절에 명시된 값을
참조하여 temporary segment를 할당한다.
Coordinator가 각 process의 temporary segment를 합치는 과정에서 일부 segment는 trim될 수도 있다.

4) Free Space And Parallel DDL
Serial operation의 경우 table/index create시 최소한 하나의 extent를 필요로 하지만,
parallel의 경우에는 parallel server process당 하나의 extent를 필요로 한다.
Parallel create시 할당되는 segment가 필요한 만큼보다 클 경우 free space pocket을 생성할 수 있다.
각 temporary segment의 unused space가 tablespace의 MINIMUM  EXTENT보다 크면, Oracle은
각 temporary segment의 row merge시 이를 trim하여 system free space로 돌린다. Unused space는
새로운 extent 할당 시 사용될 수 있지만, 큰 segment로 coalescing될 수는 없다.(external fragmentation)
MINIMUM EXTENT 값보다 작을 경우에는 row merge시 trim을 할 수 없으며, 따라서 system free space에
돌려지지 않은 채 table/index의 일부로 남게 되어 향후 insert/update시에만 사용된다.(internal fragmentation)

Reference Documents
-------------------
Note. 203238.1
Note. 199272.1
Note. 1029948.6

[Top]
No.
제목
작성자
작성일
조회
17307Parallel query option의 사용
정재익
2004-02-11
9105
17306ORACLE PARALLEL SERVER (OPS)
정재익
2004-02-11
7629
17305PARALLEL 감가 상각 PROCESS 설정 PROFILE
정재익
2004-02-11
5602
17304V8I) PARALLEL QUERY & PARALLEL DDL 사용 방법
정재익
2004-02-11
8232
17303INVENTORY TRANSACTION WORKER가 PARALLEL로 실행되지 않는 문제
정재익
2004-02-11
5334
17302Direct load 또는 parallel insert 의 사용방법
정재익
2004-02-11
12869
17301Parallel load 기능의 활용 예제
정재익
2004-02-11
7538
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.028초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다