- 접근 패턴: 애플리케이션이 MySQL을 사용하여 데이터에 접근하는 방법이다.
- 접근 패턴을 변경하면 MySQL 성능에 큰 영향을 미치지만, 일반적으로 다른 최적화보다 더 많은 노력이 필요하다.
- MySQL 성능은 애플리케이션이 MySQL을 어떻게 사용하냐에 의해 제한되는 것이지 그 반대는 아니다.
MySQL은 아무것도 하지 않는다#
- 애플리케이션이 유휴 상태일 때는 MySQL은 유휴 상태이고, 애플리케이션이 바쁘게 쿼리를 실행 중이면 MySQL도 바쁘게 해당 쿼리를 실행 중이다.
- MySQL에는 “페이지 플러싱” 같은 몇 가지 백그라운드 작업이 있지만, 실제로 백그라운드 작업은 쿼리를 실행하는 포그라운드 작업을 허용하여 느린 작업을 지연 작업을 지연하거나 방지함으로써 성능을 향상시킨다.
- 쿼리는 다른 쿼리에 영향을 준다. 일반적인 용어는 쿼리 경합이다.
- 쿼리가 경쟁하고 공유 리소스를 기다릴 때이다.
- 이러한 쿼리 경합들도 MySQL의 다른 작업에 의해서가 아닌 애플리케이션 쿼리에 의해서만 발생한다.
한계에 도달하면 성능이 불안정해진다#
- 데이터베이스 성능은 선형 확장성을 가지지 않고 100% 미만의 한계까지만 부하가 증가한다.
- 최대 처리량은 동시성이 증가함에 따라 처리량이 증가하고, 경합과 일관성이 증가함에 따라 감소한다.
- 아래는 트랜잭션 처리량을 늘리면서 MySQL이 한계에 다다를 때까지 메트릭이다.
- CPU 사용량과 QPS가 꾸준히 높은 상태로 유지되고 있었지만, 스레드는 톱날 패턴으로 불안정해졌다.
- CPU 사용량, QPS는 MySQL 한계 도달 전과 같이 약간의 변동이 있을 때가 좋다.

comments powered by