테마
매년 1월 첫 일요일 보관 배치는 지난해 주문과 주문상세를 보관 테이블로 옮긴 뒤 운영 테이블에서 지운다. 올해 리허설에서 옮기는 단계는 1초 안쪽이었는데 지우는 단계만 8.9초였다. 오과장: "DELETE는 주문 한 문장뿐인데 TKPROF에 주문상세 DELETE가 5만 번 찍혀요."
주문상세 FK는 2017년 「주문 삭제」 화면을 만들 때 ON DELETE CASCADE로 바꿨다. 그 화면은 2020년에 없어졌고, 지금은 취소도 상태(CANCEL)로만 남긴다. 주문을 지우는 것은 이 보관 배치뿐이다.
T_ORD: 100,000행 · 896블록 · PK_T_ORD (ORD_SEQ) · ORD_DT 2023-01-01 ~ 2024-12-31 · 2023년 주문 50,060건T_ORD_DET: 200,000행 · 896블록(전체 스캔 807) · PK_T_ORD_DET (ORD_SEQ, ORD_DET_NO) · 2023년 주문의 상세 100,140행 · FK_T_ORD_DET_ORD (ORD_SEQ) REFERENCES T_ORD ON DELETE CASCADET_ORD_ARC, T_ORD_DET_ARC에 2023년분을 넣고 건수 대조까지 끝냈다. T_ORD를 참조하는 다른 FK는 없다.-- 매년 1월 첫 일요일 · 보관 배치 ③ 운영에서 지우기 (보관과 건수 대조가 끝난 뒤)
DELETE FROM T_ORD
WHERE ORD_DT >= DATE '2023-01-01' AND ORD_DT < DATE '2024-01-01'; -- 상세는 CASCADE 가 지운다
COMMIT;
----------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
----------------------------------------------------------------------------------------
| 0 | DELETE STATEMENT | | 1 | | 0 |00:00:08.91 | 812K |
| 1 | DELETE | T_ORD | 1 | | 0 |00:00:08.91 | 812K |
|* 2 | TABLE ACCESS FULL| T_ORD | 1 | 50060 | 50060 |00:00:00.02 | 885 |
----------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter(("ORD_DT">=TO_DATE(' 2023-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
"ORD_DT"<TO_DATE(' 2024-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss')))
[세션 통계 — ③ 한 번]
경과 시간 8.91 초
CPU used by this session 7.62 초
recursive calls 50,214
execute count 50,108
session logical reads 812,430
redo size 96.8 MB
undo change vector size 41.2 MB
[TKPROF — 재귀 SQL (dep=1)]
delete from "SQLP"."T_ORD_DET" where "ORD_SEQ" = :1
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Execute 50060 4.12 4.48 0 150188 411562 100140