테마
T7 — 워크로드 프로파일 정의서 (템플릿)
16화에서 제정했다. 부하를 직접 만들어서 잴 때 쓴다. T5 시스템 성능 리포트의 2번 칸에는 이 문서의 ID가 들어간다. ID가 없는 T5는 무효다. 연습 DB의 AWR은 운영을 찍은 사진이 아니라 내가 만든 부하를 찍은 사진이다. 리포트에 나오는 순위와 비율, 대기는 모두 이 문서에 적은 인자에 따라 정해진다.
왜 이 문서가 있는가
15화에서 만든 부하 발생기를 기본값(THINK_MS 200 · 2세션)으로 돌리면 연습 DB는 거의 쉬고 있다. 16화에서는 같은 발생기에 인자만 바꿔 '붐비는 오전'을 만들었다.
| 부하 발생기 · STEADY | 15화 시운전 | 16화 구간 A의 런 |
|---|---|---|
| 인자 | SESSIONS=2 THINK_MS=200 MINUTES=3 | SESSIONS=3 THINK_MS=0 MINUTES=12 |
| 세션당 실행 수 | 873 · 878 | 148,186 · 147,428 · 145,925 |
| 발사기가 찍은 활성 세션 샘플 (ASH) | 9 | 2,159 |
같은 발생기도 인자 몇 개만 바꾸면 다른 시스템이 된다. 리포트에서 1위로 나오는 SQL도 가중치(WEIGHTS)가 정한다. 더 고약한 경우는 부하 발생기의 SQL이 운영 SQL과 한 글자라도 다를 때다. 16화에서 부하 발생기의 Q2는 운영 Q2 rev01에서 스칼라 서브쿼리(지역명)를 뺀 판이었는데, 그 한 줄 때문에 옵티마이저가 다른 계획(VW_GBC, 먼저 묶기)을 골랐다(9번 칸 참고).
부하를 만든 사람이 그 부하가 어떻게 생겼는지 적어 두지 않으면, 그 리포트로는 아무것도 증명할 수 없다.
작성 규칙
| 명령을 그대로 적는다 | 발사기 명령 한 줄을 전부 적는다(기본값으로 둔 인자까지). 같은 명령이면 같은 런이 나와야 하므로 씨앗까지 적는다 |
| 생각 시간을 비우지 않는다 | THINK_MS가 0이면 "0: 이유"를 적는다(예: CPU 2개를 넘치게 해서 줄 서는 모습을 보이려고) |
| 세션 수는 CPU와 함께 정한다 | Free는 cpu_count가 2다. 세션은 2~4개로 둔다(16화: 3세션에 생각 시간 0이면 평균 활성 세션 3.12, CPU를 기다린 몫 25%) |
| 구간은 런 기준 시각으로 정한다 | "+2분 ~ +11분"처럼 적는다. 스냅샷 번호는 런마다 달라지므로 적지 않는다. 스크립트가 런의 시작 시각과 끝 시각으로 스냅샷을 찾는다 |
| 운영과 다른 점을 적는다 | 9번 칸에 적는다. 비어 있으면 반려한다 |
| 정리까지가 프로파일이다 | 8번 칸에 끝난 뒤 무엇을 되돌렸는지 적는다 |
양식
┌──────────────────────────────────────────────────────────────────────────────┐
│ T7 워크로드 프로파일 — ID: WP-____ │
├──────────────────────────────────────────────────────────────────────────────┤
│ 작성자 : ____________ 작성일 : __________ 쓰는 리포트 : T5-___ │
└──────────────────────────────────────────────────────────────────────────────┘| # | 항목 | 내용 |
|---|---|---|
| 1 | 프로파일 ID · 목적 | 무엇을 흉내 내는가(예: 월요일 오전 · 보정 배치가 도는 시간) |
| 2 | 대상 스키마 · 데이터 · 통계 상태 | 테이블 건수 · 원본 지문(V_LD_FINGERPRINT) · 히스토그램 · 마지막 통계 수집 |
| 3 | 세션 구성 | 동시 세션 수 · 조각 가중치(WEIGHTS) · 온라인 : 배치 : 리포트 비율 · 함께 얹는 배치 |
| 4 | 시간 구성 | 데우기 · 측정 구간 · 꼬리 · THINK_MS · 런 길이 |
| 5 | 입력값 분포 | 씨앗(SEED) · 바인드 값을 고르는 방법(예: Q1은 36개월 중 하나, Q4는 첫 페이지 30% · 다음 60% · 날짜 10%) |
| 6 | 도구 · 명령 | 발사기 명령 한 줄 · 스냅샷 스크립트 · 사건 스크립트 |
| 7 | 성공 판정 | 기동 전 V$RESOURCE_LIMIT(processes · sessions) 여유 · 에러 0 · 원본 지문 앞 = 뒤 · 끝난 뒤 남은 세션 0 · 분당 실행 수가 고름(정상 상태) |
| 8 | 정리 절차 | 세션 정지 · 작업 테이블 · 임시 객체 · 통계 원복 · 스냅샷 간격과 보존 기간 원복 · 남긴 것 |
| 9 | 【16화】 운영과 다른 점 ★ | 문장이 다른 조각 · 빈도가 다른 조각 · 데이터 규모 · CPU · 그래서 리포트의 어느 칸을 믿지 말아야 하는가 |
| 10 | 이 프로파일로 낸 리포트 | T5 번호 · 구간 · 날짜 |
금지어
"부하를 걸어 봤더니": 어떤 부하인지(ID)부터 밝힌다. 세션 수와 생각 시간, 가중치, 씨앗이 없으면 아무도 같은 부하를 다시 만들 수 없다. "운영과 비슷한 부하로": 무엇이 비슷하고 무엇이 다른지 9번 칸에 적기 전에는 쓰지 않는다.
자매 문서
- T5 시스템 성능 리포트: 16화 제정. 이 문서의 ID를 2번 칸에 적는다
- T8 정기 점검: 16화 제정
- 부하 발생기:
00_자료준비/고객사/L1_ora-hanorder/README.md§부하 발생기 (15화 제작)
개정 이력: 16화에 제정했다(1호 = WP-16A · WP-16B · WP-16H). 17화 2호는 WP-17H와 WP-17S다. WP-17H는 WP-16H를 재현한 프로파일로, 같은 인자로 같은 모양이 나오는지를 7번 '성공 판정'에 넣었다.
18화 3호는 WP-18R(리소스 매니저 네 판)과 WP-18O / WP-18N(옛 판 셋과 지금 판, awrddrpt)이다. 9번 칸에 '3월이 아니라 같은 날', '바꿀 수 있는 조각은 셋뿐'을 적었다. 부하 발생기의 Q2는 바꾸지 않기로 정했다(16·17화 런 재현, 18화 2_파고들기 §6.5).