Skip to content

리비전 대장 — 18주의 판 (18화 제출본) ​

18화에 작성했다(7월 8일 월요일). 각 화의 리비전/ 폴더에 남은 판을 한 장에 모았다. 판 번호를 붙이는 규칙은 §3에 있다. 조각마다 rev00은 원본이고, 번호는 그 조각의 답이나 T0 지표를 바꾼 판에만 붙인다. 칸의 숫자는 그 판을 만든 화에서 그 화의 조건으로 잰 값이다. 18화에서 잰 값은 맨 아래 「지금의 판」 표와 W01 원장 2열에 있다. 빈칸(—)은 "그 화에서는 그 조각을 고치지 않았다"는 뜻이다. 고치지 않은 이유는 그 화 README의 「리비전」 줄에 적혀 있다.


1. 화 × 조각 ​

화Q1 기간별 주문Q2 등급별 매출Q3 상품평가 조인Q4 정산 목록 페이징P1 정산 적재N1 채번곁가지 (B1 · ADJ · SDT)
01rev00 5,827 (W01)rev00 1,026,849 (W01)rev00 841 (W01 · 정합성 별도 트랙)rev00 5,826 + Q4c 5,826 (W01)rev00 2,480ms (W01)rev00 440ms / 100회 (W01)—
02rev01 5,827 · E-Rows 2,500 → 28,336 · rev02 91(IX_ORD_BIG_DT_AMT) · rev00 파일도 이 화에 있음——————
03rev03 91(조회월을 바인드로 되돌리면서 91을 지킴)——————
04——————B1(ora-burger) rev00 41,825 → rev01 22,234 → rev02 160
05——————— (블록 · HWM · T1 3호)
06—rev00 1,026,849 → rev01 5,869(힌트 제거 · HASH)—————
07—— (rev01의 5,869가 바닥 · 남은 7블록)—————
08—— (보류안 '먼저 묶기'. Buffers가 같아 리비전 아님)rev00 839 · 금액 50배 → rev01 839 · 원장과 같은 답————
09———rev00 11,652 / 클릭 → rev01 1,007 + 3,365 → rev02 약 15(포스트잇 · 총건수 제거)———
10——————— (SQL은 그대로 · 통계가 계획을 바꿈)
11———rev03 14~17(포스트잇을 바인드로, OR 없이)———
12—————rev00 568 / 번호 → rev01 0(시퀀스)—
13————rev00(첫 리비전 파일 · 고치지 않음 · 1,000건 커밋은 지금은 무해)——
14————rev00(13화와 같은 판) → rev01 0.08초 → rev02 0.11초 · undo 0.02MB(APPEND)——
15————rev02(14화와 같은 판 · 완결. rev03은 만들지 않는다)—ADJ rev00 → rev01(recursive calls 301,187 → 2,457 · 반송함)
15b——————SDT rev00(결과 캐시가 정산일을 고정) → rev01(시각을 인자로 받음)
16—— (보류안 재검토 조건 충족 · DB CPU 47.5%)—————
17———————
18—rev02 5,868 → 5,868 · CPU 10회 115 → 33cs(먼저 묶기 · T1 12호)—————

지금의 판 (18화 · 7월 8일 · ora-hanorder에서 다시 잼) ​

Q1Q2Q3Q4P1N1B1 · ADJ · SDT
운영판rev03rev02rev01rev03rev02rev01B1 rev02(ora-burger · 18화에 재측정 안 함) · ADJ rev01 · SDT rev01
18화 값915,868 · CPU 33cs / 10회839100페이지 1490ms · 논리 읽기 2,875100회 0ms · 논리 읽기 23(15·15b화 값 그대로)
출처18화/실습/0218화/실습/09020202 (복사본)02 (복사본 시퀀스)—

2. 대장을 모으다 찾은 것 (고치지 않고 적는다) ​

#무엇어디판정
1P1_rev00.sql이 13화와 14화에 하나씩 있다13화 · 14화 리비전/같은 판의 사본이다. 14화 머리말에 "13화 리비전/P1_rev00.sql과 같은 판"이라고 밝혀 두었다. 14화 머리말에 적은 "매주 첫 동작(diff)의 출발점" 관행이다. 고치지 않는다
2P1_rev02.sql이 14화와 15화에 하나씩 있다14화 · 15화 리비전/같은 판의 사본이다(15화에서 머리말에 "완결" 판정을 더했다). 고치지 않는다
3Q1_rev00.sql이 02화에 있다(01화 리비전/은 비어 있다)02화01화에서는 리비전 폴더를 만들기만 했다(원장만 쟀다). 원본 파일은 처음 고친 화에 남긴다. 이후 화도 같은 관행을 따랐다(Q2 rev00 → 06화 · Q3 rev00 → 08화 · Q4 rev00 → 09화 · N1 rev00 → 12화 · P1 rev00 → 13화)
410·14화의 표 몇 곳은 Q1을 rev02로 잰다(리터럴 판 · 계획 해시 636720714). 03화 이후 운영판은 rev03이다(바인드 · FILTER 한 줄 · 18화 실측 92368507)10화 1_사건 · 2_파고들기 · 14화 2_파고들기 · 3_실습과_기록두 판은 Buffers가 같다(91). 기준 비교에 리터럴 판을 쓴 것으로 본다. 본문은 그대로 두고 이 대장에 적는다
5힌트 유효기간 대장 3번 행의 '붙인 시점'이 04화 날짜(3월 25일)로 적혀 있었고, 이야기 속 올해 연도까지 붙어 있었다(06화는 4월 8일이고, 이 교재는 올해 연도를 쓰지 않는다)힌트 유효기간 대장18화 졸업 재측정 때 정정 표시를 남기고 「4월 8일 (06화)」로 고쳤다
6P1 rev02의 APPEND는 힌트인데도 힌트 유효기간 대장에 행이 없었다14화 → 대장18화에 5번 행으로 올렸다(그때의 규모와 재검토 조건)

3. 판 번호의 규칙 (18주가 쓴 관행을 적는다) ​

규칙18주 동안의 예
rev00은 원본 그대로 두고, 처음 고친 화에 파일로 남긴다표 2의 3번
T0 지표(Buffers)가 바뀐 판만 번호를 올린다08화 Q2 보류안 · 07화 Q2. Buffers가 같아 번호 없음
Buffers가 같아도 정답이 바뀌면 번호를 올린다08화 Q3 rev01(839 → 839 · 50배 → 1배) · 15b화 SDT rev01
Buffers가 같아도 같은 조건에서 T6 제2조의 값(CPU · TEMP · 시계)이 바뀌고 그 몫이 시스템에서 확인되면 번호를 올린다(18화에 생긴 규칙)18화 Q2 rev02(5,868 → 5,868 · CPU 115 → 33cs · 16화 DB CPU 47.5%)
같은 판을 다음 화로 옮길 때는 번호를 그대로 두고 머리말에 "같은 판"이라고 쓴다표 2의 1·2번
다음 판을 만들지 않기로 한 것도 판정이므로 머리말에 적는다15화 P1 「rev03은 만들지 않는다」

자매 문서: W01 베이스라인 원장 · 사내 튜닝 표준 T6 v1.0 · 힌트 유효기간 대장