-
2025.04.18 disk IOTIL 2025. 4. 16. 23:46
여태까지 큰 테이블에 대한 쿼리를 조사한 이유가 있습니다.
큰 테이블 조회가 DB서버의 전체적인 부하를 줄 수 있을까요?
예상 추측.
전체적인 부하는 CPU와 메모리 부하로 생각해 보겠습니다.
이들이 높은 수치를 기록하면 응답지연이 발생하게 됩니다.
쿼리들의 전체적인 응답지연이지요.
IO의 증가가 어떻게 전체적인 지연으로 연결될까요.
단순히 "로우 수가 많아서 I/O가 많아졌다"
이 자체는 단일 쿼리 성능만 떨어뜨립니다.
하지만 그 쿼리가 동시 다발적으로 들어오면,
디스크 병목 + 스레드 블로킹 + 요청 대기 전체적인 응답 지연으로 확산됩니다로우 수 증가 처리 데이터양 증가 → 각 쿼리 I/O 증가
캐시 효율 낮음 디스크 접근 비율 ↑
요청 수 증가 디스크 병렬 한도 초과 I/O queue 적체스레드(쿼리)들이 I/O 대기로 블로킹 → 요청 처리 느려짐
- 요청 큐가 밀림
- 커넥션이 블로킹됨
- worker thread가 바빠짐
중간 결과 많음 CPU + Memory + Disk 모두 소모압축 테이블 사용으로인해 CPU 사용 증가
이로 인해 cpu iowait의 증가?
확인 방법은 무엇일까?
SHOW PROCESSLIST: I/O wait 중인 쿼리 다수 존재
SHOW STATUS LIKE Threads_running: 평소보다 높아짐 (블로킹 중)
`vmstat`, `iostat` | I/O wait 상승 (`wa` 필드 증가)
`top` | CPU idle 높고, load average는 계속 올라감 → 디스크 병목의 전형적인 패턴
모두 데이터를 추측이므로 확인이 필요하긴 합니다.
'TIL' 카테고리의 다른 글
2025.04.29 좋아요 정렬 (0) 2025.04.29 2025.04.27 high-load-queue (0) 2025.04.27 2025.04.16 huge table (0) 2025.04.16 2025.04.15 nested loop join, huge table (0) 2025.04.15 2025.04.14 nested loop join (0) 2025.04.14