알쓸코지
article thumbnail

MySQL 성능 모니터링 중요성

데이터베이스 시스템의 안정성과 성능 유지를 위해 중요함
  • 시스템 성능 향상
    • 시스템의 병목 현상을 식별하고 최적화할 수 있음
    • 실행 시간이 오래 걸리는 쿼리, 대기 이벤트, 시스템 리소스 부족 등의 문제를 식별하여 해결함으로써 시스템 성능 향상
  • 장애 예방 및 대응
    • 잠재적인 문제를 사전에 감지하여 장애를 예방할 수 있음
    • CPU 사용률이 급격히 증가하거나, 디스크 공간이 부족해지는 등의 문제를 식별할 수 있음
  • 최적화된 리소스 관리
    • 모니터링을 통해 리소스 사용량을 실시간으로 파악할 수 있음
    • 리소스의 효율적인 할당과 관리가 가능해지며, 불필요한 리소스 소모를 방지할 수 있음

 

MySQL 성능 모니터링 방법

performance 스키마 & sys 스키마 사용

MySQL 서버의 내부 작업 및 성능에 관한 다양한 정보를 수집하고 제공함
  • 사용자는 일반 테이블에 저장된 테이블을 조회하는 것처럼 SQL문을 사용해 수집된 정보를 조회할 수 있음

Performance 스키마

  • MySQL 서버의 내부 작업과 성능에 관한 다양한 정보를 수집함
  • 쿼리 실행 시간, 대기 이벤트, 스레드 활동, 연결 정보, 인덱스 및 테이블 사용량 등과 관련된 성능 데이터를 제공함
    ➡️ 이 데이터들을 분석하여 시스템의 성능 문제를 식별하고 최적화할 수 있음

Sys 스키마

  • Performance 스키마의 데이터를 더 쉽게 이해하고 쿼리할 수 있도록 고수준의 뷰와 함수를 제공함
  • Performance 스키마의 성능 데이터를 논리적인 방식으로 정리하여 제공함 ➡️ 성능 데이터를 더 쉽게 이해하고 활용할 수 있음
즉, Performance 스키마는 성능 데이터를 수집하고 제공하며,
Sys 스키마는 이 데이터를 보다 쉽게 이해하고 활용할 수 있도록 돕는 역할을 수행한다.

 

커맨드라인 명령어 사용

SHOW STATUS;
  • MySQL 서버의 상태 정보 확인 가능
  • 쿼리 수행 횟수, 연결 횟수, 캐시 히트 비율 등
SHOW VARIABLES;
  • MySQL 설정 변수 값 확인 가능
SHOW PROCESSLIST;
  • 현재 실행 중인 모든 스레드에 대한 정보 조회 가능

 

MySQL 모니터링 도구 사용

다양한 모니터링 도구를 사용하여 서버의 성능을 실시간으로 모니터링

MySQL Workbench

  • 데이터베이스 관리 및 개발을 위한 GUI 도구
  • 네트워크 상태, 서버 상태, 쿼리 통계 등 데이터베이스의 상태와 성능을 실시간으로 분석해 줌 
    https://www.mysql.com/products/workbench/performance/

PMM(Percona Monitoring and Management)

  • Percona에서 제공하는 오픈소스 모니터링 및 관리 플랫폼
  • 프로메테우스 기반으로 동작함

https://www.percona.com/blog/troubleshooting-percona-monitoring-and-management-pmm-metrics/

Datadog

  • 클라우드 기반의 모니터링 및 분석 플랫폼

800https://docs.datadoghq.com/ko/integrations/mysql/?tab=host

 

각각 어떠한 상황에 적절할까?

  • Performance 스키마 & Sys 스키마
    • MySQL 내부 작업 및 성능에 대한 분석이 필요할 경우
  • 커맨드라인 명령어
    • 간단하게 MySQL 서버 상태 확인이나 현재 실행 중인 쿼리 및 스레드 상태를 파악할 때
  • MySQL 모니터링 도구
    • 대규모의 MySQL 인스턴스를 모니터링하고 관리해야 할 때나 실시간으로 성능 데이터를 시각화하고 분석할 때
개발 도중 간단하게 MySQL 서버의 상태나 실행 중인 쿼리를 확인할 때는 커맨드라인 명령어,
MySQL를 한 대만 운영할 때 내부 성능을 확인하고 싶다면 Performance 스키마 & Sys 스키마,
대규모의 데이터베이스를 사용하거나 실시간으로 모니터링하고 싶다면 MySQL 모니터링 도구가 적합할 것 같다.

 

정리

지금까지 MySQL 성능 모니터링의 필요성과 모니터링 방법에 대해서 알아보았다. 상황에 따라 적절한 모니터링 방법을 선택하여, 시스템을 지속적으로 모니터링하고 적절한 튜닝 방법을 선택하여 성능을 개선하자!

 

Ref

📘 Real MySQL 8.0 - 18장 Performance 스키마 & Sys 스키마

https://theif45.tistory.com/196#MySQL_%EC%84%B1%EB%8A%A5_%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81%EC%9D%98_%EC%A4%91%EC%9A%94%EC%84%B1

https://wiki.yowu.dev/ko/Knowledge-base/mysql-for-planner-marketers/Learning/mysql-performance-optimization-tips-and-tricks-for-non-developers

https://dataonair.or.kr/db-tech-reference/d-lounge/expert-column/?mod=document&uid=53690

https://toad.co.kr/it/?q=YToyOntzOjEyOiJrZXl3b3JkX3R5cGUiO3M6MzoiYWxsIjtzOjQ6InBhZ2UiO2k6Mjt9&bmode=view&idx=5858450&t=board

https://blog.naver.com/rlaeogh222/221326360067

https://www.metricfire.com/blog/a-modern-guide-to-mysql-performance-monitoring/#strongMySQL-features-that-impact-database-performancestrong

'Backend > Database' 카테고리의 다른 글

[MySQL] 데이터베이스 확장 방식  (0) 2024.03.21
[MySQL] 커서(Cursor)  (0) 2024.03.14
[MySQL] Direct I/O  (0) 2024.02.29
[MySQL] 문자열 패턴 매칭 연산자 (REGEXP, LIKE)  (0) 2024.02.22
[MySQL] 실행 계획 - partitions 칼럼  (0) 2024.02.15
profile

알쓸코지

@chocoji

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!