MySQL의 성능을 제한하는 요소

  1. 가장 흔한 병목 현상은 CPU 고갈입니다. 병렬로 너무 많은 쿼리를 실행하려고 하거나 쿼리를 너무 오랫동안 실행했을때 CPU 포화가 발생합니다.
  2. I/O 포화는 HDD에서 SSD사용의 전환으로 많이 줄어들었습니다.

MySQL용 CPU를 선택하는 방법

cpu 전체 부하량만 보는 대신 가장 중요한 쿼리에 대한 cpu 사용률과 I/O의 균형을 살펴보고 CPU가 고르게 로드되었는지 확인합니다.

MySQL에서 성능 목표

메모리 및 디스크 리소스의 균형 유지

메모리와 디스크 크기, 속도, 비용 및 기타 품질의 균형을 유지하여 워크로드 성능을 향상시키는 것이 중요합니다.

읽기, 쓰기, 캐싱

모든 데이터가 메모리에 있는 경우, 서버의 캐시가 준비되어 모든 읽기가 캐시 히트하게 되어 디스크에서의 물리적인 읽기를 차단할 수 있습니다.

하지만, 쓰기는 다른 문제입니다. 캐시는 쓰기를 지연시킬 수 있지만, 읽기처럼 쓰기를 배제할 수 없습니다. 쓰기 지연을 허용하는 것 외에도 캐싱을 사용하면 쓰기를 두 가지 중요한 방식으로 함께 그룹화할 수 있습니다.

쓰기는 랜덤 I/O를 보다 순차적인 I/O로 변환하기 때문에 버퍼링의 이점이 큽니다. 비동기 쓰기는 일반적으로 운영체제에서 처리되며, 디스크에 보다 효율적으로 플러시할 수 있도록 일괄 처리됩니다. 동기식 쓰기는 완료되기 전에 디스크에 기록해야 합니다.

작업 세트란?

모든 애플리케이션에는 데이터의 작업세트, 즉 실재로 작업을 수행하는 데 필요한 데이터가 있습니다.