ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2025.04.18 disk IO
    TIL 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

    댓글

Designed by Tistory.