Skip to content

01화 · 인수인계 없는 인수인계 ​

🗓️ 3월 4일 (월) · 입사 3일째 · 무대 ora-hanorder오늘 배울 것: 재는 법. 오늘은 아무것도 고치지 않는다.


파일 세 개, 쓰임새 세 가지 ​

파일무엇을 하나시간
읽는다1_사건.md티켓을 받고, 시스템을 파악하고, 처음으로 재 보는 하루. 여기서부터 시작한다30분
한다3_실습과_기록.md직접 측정하고, 보고서 세 장을 쓴다60~90분
찾는다2_파고들기.mdERD · 블록 · 실행계획 읽는 법 · 6조각 원문 · 공식 문서 위치필요할 때

1을 읽고 3을 따라 한다. 2는 막힐 때 펼친다. 1년 뒤 "그게 뭐였지?" 싶을 때 돌아올 곳도 2번이다.

시간이 없는 주 (40분) ​

1_사건.md를 중단 지점 1까지 읽고, 3_실습과_기록.md는 STEP 0, 1, 4만 한다. 그래도 리비전은 한 걸음 나아가고, 원장에는 한 줄이 남는다. 이 교재가 말하는 성공은 완주 하나뿐이다.


이 화의 이야기 ​

㈜한빛유통에 입사한 지 사흘째 되는 월요일, 아침 9시 12분에 첫 티켓이 배정된다.

"정산 조회 화면이 30초 넘게 걸립니다. 예전엔 안 그랬어요." (박팀장)

시스템을 만든 강도현 선배는 2년 전에 퇴사했다. 인수인계 문서는 없고, 소스 맨 위에 -- 건드리지 말 것 (2019.03 강도현)이라는 주석 한 줄만 남아 있다.

같은 날 아침, 새 멘토 윤세라 선배가 옆자리에 앉는다. 티켓을 보여 주자 선배가 묻는다.

"30초라는 건 누가 잰 거야?""…박팀장님이요.""그럼 그건 측정이 아니라 증언이야."


왜 첫 화가 "고치지 않는 화"인가 ​

아마 코드를 열고, 느린 곳을 찾고, 인덱스부터 만들고 싶을 것이다. 그렇게 하면 다음 세 가지는 끝내 배우지 못한다.

바로 고치면재고 나서 고치면
"빨라진 것 같다"고밖에 말하지 못한다"1,026,849 → 5,869블록"이라고 말할 수 있다
여러 곳을 한꺼번에 고쳐서 무엇이 효과였는지 모른다하나씩 고치면서 각각 얼마나 기여했는지 안다
가장 느린 것부터 손댄다가장 급한 것부터 손댄다(둘은 다르다)

그래서 01화의 산출물은 고친 SQL이 아니라 숫자 한 장과 규칙 두 개다.


오늘 나올 숫자 (미리보기) ​

조각무엇Buffers결과행
Q2고객등급별 매출 집계1,026,8493
Q4+Q4c정산 목록 한 페이지11,65210
Q1기간별 주문 조회5,8271
Q3상품평가 조인8415

① Q2가 전체의 98%다. 결과 3줄을 만들려고 테이블 전체를 176번 읽는다. ② Q1과 Q3는 자릿수부터 다르다. 그런데 둘 다 "느리다"는 신고에 들어 있었다. 체감으로는 둘을 구별할 수 없다. ③ Q3는 가장 작지만 가장 위험하다. 841블록으로 빠르지만 답이 틀린다. 성능 순위로 줄을 세우면 끝내 고쳐지지 않는다.

읽어서 아는 것과 직접 재 보고 아는 것은 다르다. 그래서 이 화는 짧지만, 실제로 SQL을 돌려 봐야 한다.


실습 준비 ​

bash
docker start ora-hanorder

환경이 없으면 00 · 자료 준비부터 따라 한다. 빈 PC에서 시작해도 되고, Docker가 있으면 약 3분 걸린다. SQL>을 여는 법이 낯설면 02_접속과_실행_방법.md를 본다.


이 화가 다음으로 넘기는 것 ​

01화는 기반을 다지는 화다. 무언가를 고치는 화가 아니라, 이후 18화가 딛고 설 바닥을 만든다.

무엇어디로
W01 베이스라인 원장02~15화의 개선 근거 · 18화 졸업 판정의 유일한 기준
T0 측정규약19화 내내 바꾸지 않는다. 이 규약을 어긴 측정은 증거로 치지 않는다
T9 대상 선정·중단 기준화마다 "무엇부터 볼지"를 정한다
Q1 = 5,82702화: 인덱스를 만들어도 안 탄다
커피 캐리어 비유04화: 같은 인덱스인데 왜 하나만 느린가
Q2 = 1,026,84906화: 힌트를 떼면 175분의 1
E-Rows 16배 오추정10화: 히스토그램
Q3의 정합성 오류08화: 별도 트랙
P1의 커밋 100회13화: redo size와 ORA-01555

← 교재 전체 안내 · 다음 → 02화 「인덱스는 있는데 안 탄다」