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 도구
- 네트워크 상태, 서버 상태, 쿼리 통계 등 데이터베이스의 상태와 성능을 실시간으로 분석해 줌
PMM(Percona Monitoring and Management)
- Percona에서 제공하는 오픈소스 모니터링 및 관리 플랫폼
- 프로메테우스 기반으로 동작함
Datadog
- 클라우드 기반의 모니터링 및 분석 플랫폼
각각 어떠한 상황에 적절할까?
- Performance 스키마 & Sys 스키마
- MySQL 내부 작업 및 성능에 대한 분석이 필요할 경우
- 커맨드라인 명령어
- 간단하게 MySQL 서버 상태 확인이나 현재 실행 중인 쿼리 및 스레드 상태를 파악할 때
- MySQL 모니터링 도구
- 대규모의 MySQL 인스턴스를 모니터링하고 관리해야 할 때나 실시간으로 성능 데이터를 시각화하고 분석할 때
개발 도중 간단하게 MySQL 서버의 상태나 실행 중인 쿼리를 확인할 때는 커맨드라인 명령어,
MySQL를 한 대만 운영할 때 내부 성능을 확인하고 싶다면 Performance 스키마 & Sys 스키마,
대규모의 데이터베이스를 사용하거나 실시간으로 모니터링하고 싶다면 MySQL 모니터링 도구가 적합할 것 같다.
정리
지금까지 MySQL 성능 모니터링의 필요성과 모니터링 방법에 대해서 알아보았다. 상황에 따라 적절한 모니터링 방법을 선택하여, 시스템을 지속적으로 모니터링하고 적절한 튜닝 방법을 선택하여 성능을 개선하자!
Ref
📘 Real MySQL 8.0 - 18장 Performance 스키마 & Sys 스키마
https://dataonair.or.kr/db-tech-reference/d-lounge/expert-column/?mod=document&uid=53690
'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 |