병렬처리
프로그램 설계 시 가장 중점을 두는 목표 중의 하나는 사용자를 위한 response time의 단축입니다. 그러나 처리 해야 할 data 량이 많아지게 되거나 내부적인 복잡한 처리를 필요로 하는 경우는 설계자나 개발자로서 취할 수 있는 방법의 한계가 있게 됩니다. 이런 경우 DB2 병렬처리 기능이 elapsed time을 단축시킬 수 있는 대안이 됩니다.
병렬처리 방식
병렬처리 방식에는 다음 3가지가 있다.
l I (IO 병렬처리)
ü SQL 문과 사용 가능한 시스템 자원에 따라 optimizer가 결정하며 하나의 task에 복수의 IO stream을 할당하는 방식이다.
ü 하나의 CP (central processor)로 처리된다.
ü 복수개의 DASD에 분산되어 있는 data가 channel을 통해 BP로 병렬로 전송된다.
ü IO-intensive SQL 에 효과가 있다
l C (CP 병렬처리) :
ü 여러 개의 task가 동시에 병렬로 기동되며 각 task당 하나의 IO stream이 할당된다.
ü 여러 개의 CP가 있는(tightly-coupled) CPC (central processor complex) 환경에서 가능하다.
ü 여러 개의 CP를 통해 복수개의 DASD로부터 data가 BP로 병렬로 전송된다.
ü CP가 여러 개 있는 환경에서 IO-intensive SQL에 효과가 있다
l S (Sysplex 병렬처리)
ü 하나의 SQL이 여러 개의 DB2 시스템을 통해 수행된다.
ü 둘 이상의 CPC가 sysplex data sharing으로 구현된 환경에서 가능하다.
ü 각 DB2 시스템에서 IO 및 CP 병렬처리가 수행된다.
ü 대량 sort나 Join과 같은 CP-intensive SQL에 효과적이다.
병렬처리의 사용
l DB 환경
ü Partitioned Tablespace와 Partitioned Index
ü Sort가 일어나는 경우 work file 결과
ü IO 병렬처리는 하나의 dataset에 있는 data에 대해서는 기동 불가함.
ü CP 및 Sysplex 병렬처리의 경우는 하나의 dataset에도 사용가능 : 하나의 partition, non-partitioned Table, NPI (non-part index)
l Static SQL의 경우
ü BIND…DEGREE option으로 지정
ü 1 혹은 ANY (1은 병렬 처리 사용 중지를 의미)
ü default는 System parameter : CDSSRDEF로 지정가능
l Dynamic SQL의 경우
ü SET CURRENT DEGREEL문으로 지정
ü CURRENT DGREE라는 special register 값을 지정하는 것으로 이 문장이 static SQL에는 영향을 주지 못함.
ü 1 혹은 ANY (1은 병렬 처리 사용 중지를 의미)
ü default는 System parameter : CDSSRDEF로 지정가능
l OPTIMIZER의 결정
ü 먼저CP 및 Sysplex 병렬처리가 가능한지 고려한다. system환경상 불가능할 경우 IO 병렬처리를 고려한다.
ü CP 혹은 Sysplex 병렬처리를 사용하는 경우는 복수개의 task를 통해 IO는 당연히 병렬로 처리된다.
V7 MAX DEGREE option
l CURRENT DGREE = ANY인 경우 병렬 처리가 기동되는데 그 때 실제 병렬 처리될 task 개수 (degree)는 DB2가 시스템 상황에 따라 자동으로 결정하게 된다.
l 이때 기동 시킬 task의 최대 개수를 사용자가 제한 하고자 할 때 max degree option으로 지정한다.
ü 0으로 지정하는 경우는 DB2가 알아서 결정하도록 하는 ‘no limit’ option의 의미이다.
l max degree option으로는 병렬처리의 기동 여부를 제어할 수 없다.
|