테마
매월 1일 「판매상품 재집계」 배치는 CF11_H를 칸마다 작업 하나씩 맡겨 여섯 작업으로 나눠 돌린다. 작업마다 읽은 행을 상품 단가 이력과 맞춰 보는 PL/SQL 처리가 이어서 돌아서, 작업 시간은 읽은 행 수에 거의 비례한다.
지난달 작업 1, 2, 5, 6은 약 6분 10초에 끝났고 작업 3과 4는 약 12분 30초가 걸렸다. 배치는 가장 늦은 작업이 끝나야 끝난다. 2019년 설계 메모에는 "작업 슬롯 6개 → 해시 6칸."이라고 적혀 있고, 올해 배치 서버의 동시 작업 한도는 8로 늘었다.
CF11_H 판매상품(파티션 복사본, 문제 설정): CF11 1,096,708행 · 8,204블록을 PARTITION BY HASH (SLE_NO) PARTITIONS 6으로 나눠 CTAS로 지었다. SLE_NO는 판매번호로 값이 약 50만 가지다.CF11_H_PK (SLE_NO, ITM_NO). 다른 인덱스는 없다. 통계는 최신이다.PARTITION (칸 이름)으로 지목해 읽고 상품별로 합쳐 작업 테이블 CF11_SUM_W에 넣는다.CREATE TABLE CF11_H
PARTITION BY HASH (SLE_NO) PARTITIONS 6
AS SELECT * FROM CF11;
-- 작업 k (k = 1 ~ 6) : 칸 하나를 맡는다 (아래는 작업 3)
INSERT INTO CF11_SUM_W (JOB_NO, ITM_NO, SLE_QTY, SLE_AMT)
SELECT :job_no, ITM_NO, SUM(SLE_QTY), SUM(SLE_QTY * SLE_UPRC)
FROM CF11_H PARTITION (SYS_P3103)
GROUP BY ITM_NO;
[작업 1 · SYS_P3101]
-------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Pstart | Pstop |
-------------------------------------------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 1 | | 0 | 00:00:00.21 | 1031 | | |
| 1 | LOAD TABLE CONVENTIONAL | CF11_SUM_W | 1 | | 0 | 00:00:00.21 | 1031 | | |
| 2 | HASH GROUP BY | | 1 | 109 | 109 | 00:00:00.20 | 1026 | | |
| 3 | PARTITION HASH SINGLE | | 1 | 137K | 137K | 00:00:00.09 | 1026 | 1 | 1 |
| 4 | TABLE ACCESS FULL | CF11_H | 1 | 137K | 137K | 00:00:00.07 | 1026 | 1 | 1 |
-------------------------------------------------------------------------------------------------------------------
[작업 3 · SYS_P3103]
-------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Pstart | Pstop |
-------------------------------------------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 1 | | 0 | 00:00:00.42 | 2056 | | |
| 1 | LOAD TABLE CONVENTIONAL | CF11_SUM_W | 1 | | 0 | 00:00:00.42 | 2056 | | |
| 2 | HASH GROUP BY | | 1 | 109 | 109 | 00:00:00.40 | 2051 | | |
| 3 | PARTITION HASH SINGLE | | 1 | 274K | 274K | 00:00:00.18 | 2051 | 3 | 3 |
| 4 | TABLE ACCESS FULL | CF11_H | 1 | 274K | 274K | 00:00:00.14 | 2051 | 3 | 3 |
-------------------------------------------------------------------------------------------------------------------
[USER_TAB_PARTITIONS]
PARTITION_NAME POSITION NUM_ROWS BLOCKS
SYS_P3101 1 137,092 1,026
SYS_P3102 2 137,071 1,025
SYS_P3103 3 274,180 2,051
SYS_P3104 4 274,203 2,051
SYS_P3105 5 137,085 1,026
SYS_P3106 6 137,077 1,025