테마
매일 밤 「월별 매장 판매 집계」 테이블을 2년 치 모두 다시 만든다. 반품 정정이 지난 달로 거슬러 올라가 들어오는 일이 있어서다. 대시보드와 월간 보고서가 이 집계 테이블을 읽는다. 배치 소스에는 개발자의 메모가 있다. "2년을 한 번에 읽으면 FULL이 된다. 한 달씩 24번 나눠 읽어 인덱스를 태운다." 배치 로그를 보면 한 달에 약 480블록씩, 24번이다. 오과장은 "한 번은 싸 보이는데 합치면 얼마냐"고 묻는다.
CF10 판매: 500,000행 · 4,583블록 · 판매 날짜순으로 쌓였다 · 2022-01-01 ~ 2023-12-31(24개월) · 한 달 약 20,800건(4.2%) · 매장 다섯 곳IX_CF10_SLE_DT (SLE_DT): BLEVEL 2 · 리프 1,393 · CLUSTERING_FACTOR 9,921(교재 03화 실측) · 통계 최신CF10_MON_SHP (YM, SHP_NO, SLE_CNT): 이 배치가 만드는 120행(24개월 × 5매장) · 인덱스 없음DECLARE
v_ym VARCHAR2(6);
BEGIN
DELETE FROM CF10_MON_SHP;
FOR m IN 0 .. 23 LOOP
v_ym := TO_CHAR(ADD_MONTHS(DATE '2022-01-01', m), 'YYYYMM');
INSERT INTO CF10_MON_SHP (YM, SHP_NO, SLE_CNT)
SELECT v_ym, SHP_NO, COUNT(*)
FROM CF10
WHERE SLE_DT BETWEEN v_ym || '01' AND v_ym || '31'
GROUP BY SHP_NO;
END LOOP;
COMMIT;
END;
[루프 한 번 · 2023년 12월 (20,864건)]
------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
------------------------------------------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 1 | | 0 |00:00:00.01 | 483 |
| 1 | LOAD TABLE CONVENTIONAL | CF10_MON_SHP | 1 | | 0 |00:00:00.01 | 483 |
| 2 | HASH GROUP BY | | 1 | 5 | 5 |00:00:00.01 | 479 |
| 3 | TABLE ACCESS BY INDEX ROWID BATCHED| CF10 | 1 | 1250 | 20864 |00:00:00.01 | 479 |
|* 4 | INDEX RANGE SCAN | IX_CF10_SLE_DT | 1 | 1250 | 20864 |00:00:00.01 | 60 |
------------------------------------------------------------------------------------------------------------------
4 - access("SLE_DT">=:B1||'01' AND "SLE_DT"<=:B1||'31')
[TKPROF · 배치 한 번]
INSERT INTO CF10_MON_SHP (YM, SHP_NO, SLE_CNT) SELECT :B1 , SHP_NO, COUNT(*) FROM CF10 ...
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 24 0.12 0.13 0 11362 96 120
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 25 0.12 0.13 0 11362 96 120
[같은 집계를 한 문장으로 · FULL] CF10 4,583블록 한 번