1. 디스크 읽기 방식

    1. CPU나 메모리처럼 전기적 특성을 띤 장치의 성능은 짧은 시간동안 매우 빠른 속도로 발전했지만 디스크 같은 기계식 장치의 성능은 많이 제한
    2. 최근에는 자기 디스크 원판에 의존하는 HDD보다 SSD활용
    3. 이러한 이유로 데이터베이스의 성능 튜닝은 어떻게 디스크 I/O를 줄이느냐가 관건
  2. HDD, SSD

    Untitled

    1. HDD는 기계식 장치로 데이터베이스 서버에서는 항상 디스크 장치가 병목현상을 발생시킴
    2. 이러한 현상을 극복하기 위해 전자식 저장 매체인 SSD가 많이 출시
    3. SSD도 기존 HDD와 같은 인터페이스(SATA, SAS)지원하므로 그대로 사용 가능
    4. SSD는 HDD에서 저장용 원판을 제거하고 플래시 메모리를 장착, 이에 따라 원판을 회전시켜서 저장할 필요가 없으므로 빨리 데이터를 읽고 쓸수 있음
    5. 플래시 메모리는 전원이 공급되지 않아도 데이터가 삭제되지 않음
    6. 성능
      1. 디스크의 헤더를 움직이지 않고 한번에 많은 데이터를 읽는 순차I/O에서는 SSD가 HDD보다 조금 빠르거나 거의 차이가 없는 수준
      2. 하지만 디스크의 헤더를 움직이는 랜덤I/O에서는 SSD가 월등히 빠름
      3. 데이터베이스에서 대부분의 작업은 랜덤I/O를 이용해서 작은 데이터를 쓰고 읽는 경우가 많음
      4. 따라서 SSD는 DBMS에 적합함
  3. 랜덤I/O와 순차I/O

    1. 순차I/O
      1. 3개의 페이지를 디스크에 기록할 때 1번 시스템 콜 요청
      2. 즉, 디스크 헤더를 한번 움직이고 데이터를 기록
    2. 랜덤 I/O
      1. 3개의 페이지를 디스크에 기록할 때 3번 기스템 콜 요청
      2. 즉, 매번 기록할 때마다 디스크 헤더를 이동
    3. 결국 순차I/O가 랜덤I/O보다 거의 3배정도 빠르다고 볼 수 있음
    4. 즉, 디스크의 성능은 얼마나 이동하지 않고 데이터를 한번에 기록하느냐에 따라 결정됨
  4. 쿼리 튜닝

    1. 사실 쿼리를 튜닝해서 I/O를 순차I/O로 바꿔서 실행할 방법은 많지 않음
    2. 일반적으로 쿼리를 튜닝하게되면 랜덤I/O자체를 줄이는 활동
    3. 즉, 꼭 필요한 데이터만 읽도록 쿼리를 개선