어떤 증상인가
디스크 용량 고갈 문제가 나타난 입력, 직전 동작과 실제 결과를 함께 적습니다. 예를 들어 “가끔 실패”라고 쓰는 대신 정상 사례와 실패 사례를 하나씩 두고, 두 사례에서 달라진 version·설정·데이터를 표로 남깁니다.
| 사례 | 입력과 상태 | 결과 |
|---|---|---|
| 정상 | 가장 작은 정상 조건 | 기대한 결과 |
| 실패 | 한 조건만 달라진 재현 | 실제 오류·값 |
원인을 좁히는 순서
data file뿐 아니라 transaction log, temp file, backup와 binary log가 disk를 사용할 수 있어 filesystem별 증가 원인을 확인해야 합니다.
기대하는 행·열·순서와 NULL·중복·timezone 처리 계약을 먼저 적고 실제 결과와 execution plan을 별도로 확인합니다. slow query, execution plan, lock wait, connection, buffer hit, WAL/binlog과 디스크 지연을 함께 본다. 정상과 실패를 번갈아 실행하고, 이 원인이 맞다면 달라져야 할 값부터 확인합니다. 관련 없는 로그와 설정을 한꺼번에 바꾸지 않습니다.
수정하고 확인하기
결과 계약을 만족하는 가장 단순한 query와 짧은 transaction에서 시작하고 index는 실제 predicate·정렬·데이터 분포를 보고 추가합니다. 쿼리 모양과 데이터 분포를 먼저 고치고 index, transaction 범위, pool과 보존 정책을 전체 부하에 맞춘다.
수정 전 실패 사례가 사라지고 기존 정상 사례가 유지돼야 합니다. 운영과 유사한 데이터 분포에서 plan, p95, lock time, rows examined, IOPS와 복구 가능성을 확인한다. 대표값, NULL, 중복, 경계 크기와 필요한 동시 실행에서 결과 정합성을 먼저 확인한 뒤 plan, rows와 I/O 비용을 비교합니다. 가장 작은 실패 입력은 자동 테스트나 실행 가능한 점검 명령으로 남깁니다.
공식 문서와 적용 범위
문서의 기본값과 동작은 version에 따라 달라질 수 있습니다. 현재 DB 제품과 version, schema·index·통계 상태, 데이터 분포와 동시 부하에서 다시 확인합니다.