Skip to main content

DBMS 모니터링 : 통계

느린 쿼리

MySQL의 slow_log 테이블은 데이터베이스에서 느리게 실행되는 쿼리를 추적하는 로그 파일입니다. 느리게 실행되는 쿼리의 소스를 식별하여 데이터베이스 성능을 진단하고 개선하는 데 사용됩니다.

slow_log 테이블은 시작 시간, 실행 시간, SQL 문 및 처리된 행 수와 같은 각 느린 쿼리에 대한 정보를 저장합니다. 이 정보를 사용하여 실행하는 데 너무 오래 걸리는 쿼리와 성능 향상을 위해 변경해야 하는 사항을 식별할 수 있습니다.

MySQL에서 slow_log 테이블을 활성화하려면 Windows에서 my.cnf 파일 또는 my.ini 파일을 수정하고 다음 행을 추가해야 합니다.

slow_query_log=1
slow_query_log_file=<파일에 대한 경로>
long_query_time=<시간(초)>

"slow_query_log" 매개변수는 느린 쿼리 로그를 활성화하고, "slow_query_log_file" 매개변수는 느린 쿼리 로그 파일에 대한 경로를 지정하며, "long_query_time" 매개변수는 느린 쿼리를 정의하기 위한 임계 시간을 초 단위로 설정합니다.

slow_log 테이블은 데이터베이스 관리자가 데이터베이스 성능을 최적화하고 쿼리 성능을 향상시키는 데 유용한 도구입니다.

계정별 메모리 사용량

MySQL의 "memory_summary_by_account_by_event_name"은 이벤트 이름별로 데이터베이스에 있는 여러 계정의 메모리 사용량을 요약하는 쿼리를 나타냅니다. 각 계정에서 사용하는 메모리 양과 가장 많은 메모리를 소비하는 이벤트 유형(쿼리, 테이블 작업 등)에 대한 분석을 제공합니다.

이 정보는 데이터베이스 관리자가 메모리 사용량을 최적화해야 하거나 리소스를 다르게 할당해야 하는 영역을 식별하는 데 유용할 수 있습니다. "performance_schema.memory_summary_by_thread_by_event_name" 테이블과 같은 관련 데이터베이스 테이블 및 열에 대해 group by 절과 함께 SELECT 문을 실행하여 쿼리를 실행할 수 있습니다.

쿼리 출력은 각 계정에서 사용한 총 메모리 요약을 이벤트 이름별로 분류하여 제공합니다. 이 정보는 데이터베이스 쿼리 최적화, 저장된 데이터 양 감소 또는 추가 리소스 추가와 같이 성능을 개선할 수 있는 영역을 식별하는 데 사용할 수 있습니다.

info

📌 NOTE mysql, percona 8.0 이상, mariadb 10.5.2 이상에서 지원

호스트별 메모리 사용량

memory_summary_by_host_by_event_name은 호스트별로 그룹화된 다양한 이벤트의 메모리 사용량에 대한 정보를 제공하는 MySQL의 성능 스키마 테이블입니다. 이 테이블은 서버 성능에 대한 실시간 정보를 제공하는 MySQL의 기능인 성능 스키마의 일부입니다.

memory_summary_by_host_by_event_name 테이블에는 각 이벤트에서 할당 및 사용하는 메모리 양과 실행된 이벤트의 인스턴스 수에 대한 정보가 포함됩니다. 이 정보는 가장 많은 메모리를 소비하는 이벤트를 식별하는 데 유용할 수 있으며, 이는 성능 병목 현상을 식별하고 서버의 성능을 개선하는 데 유용할 수 있습니다.

memory_summary_by_host_by_event_name 테이블의 일부 열은 다음과 같습니다.

  • 호스트: 이벤트가 실행된 서버의 호스트 이름
  • event_name: 이벤트 이름
  • sum_alloc: 이벤트 인스턴스가 할당한 총 메모리 양
  • sum_free: 이벤트 인스턴스에 의해 해제된 총 메모리 양
  • current_alloc: 이벤트 인스턴스가 할당한 현재 메모리 양
  • current_free: 이벤트 인스턴스에 의해 해제된 현재 메모리 양
  • count_alloc: 이벤트 인스턴스별 메모리 할당 수
  • count_free: 이벤트 인스턴스별로 해제된 메모리 수

요약하면 memory_summary_by_host_by_event_name 테이블은 성능 병목 현상을 식별하고 서버 성능을 개선하는 데 유용할 수 있는 서버 이벤트의 메모리 사용량에 대한 중요한 정보를 제공합니다.

info

📌 NOTE mysql, percona 8.0 이상, mariadb 10.5.2 이상에서 지원

스레드별 메모리 사용량

memory_summary_by_thread_by_event_name은 서버의 각 스레드에 대한 메모리 사용량 통계를 이벤트 이름별로 분류하여 제공하는 MySQL의 performance_schema 테이블입니다. 테이블은 실행 중인 이벤트 유형(예: SQL 문 구문 분석, 저장 프로시저 실행 등)별로 그룹화된 각 스레드에서 사용하는 메모리 양을 보여줍니다.

이 테이블의 열에는 다음이 포함됩니다.

  • THREAD_ID: 스레드의 고유 식별자입니다.
  • EVENT_NAME: 스레드가 실행 중인 이벤트 유형의 이름입니다.
  • COUNT_ALLOC: 이 이벤트 유형 및 스레드에 대한 메모리 할당 수입니다.
  • SUM_NUMBER_OF_BYTES_ALLOC: 이 이벤트 유형 및 스레드에 할당된 총 바이트 수입니다.
  • AVG_BYTES_ALLOC: 이 이벤트 유형 및 스레드의 각 할당에 할당된 평균 바이트 수입니다.

이 테이블은 가장 많은 메모리를 사용하는 스레드와 해당 사용에 기여하는 이벤트 유형을 판별하는 데 유용할 수 있습니다. 데이터베이스 관리자는 이 테이블의 데이터를 분석하여 메모리가 과도하게 할당되거나 해제될 수 있는 영역을 식별하여 메모리 사용을 최적화할 수 있습니다.

info

📌 NOTE mysql, percona 8.0 이상, mariadb 10.5.2 이상에서 지원

사용자별 메모리 사용량

Memory_summary_by_user_by_event_name은 사용자 및 이벤트 이름별 메모리 사용량 요약을 제공하는 MySQL의 메트릭입니다. 데이터베이스 내의 다양한 사용자 및 이벤트가 소비하는 메모리 양을 모니터링하는 데 도움이 됩니다. 이 정보는 성능 문제를 식별하고 데이터베이스 리소스를 효율적으로 관리하는 데 유용합니다.

memory_summary_by_user_by_event_name 지표는 다음과 같은 메모리 사용량 측면에 대한 정보를 제공합니다.

이 메트릭을 정기적으로 모니터링함으로써 데이터베이스 관리자는 쿼리 실행 계획을 조정하거나 데이터베이스 구성을 조정하여 성능 병목 현상을 식별하고 리소스 활용을 최적화할 수 있습니다.

info

📌 NOTE mysql, percona 8.0 이상, mariadb 10.5.2 이상에서 지원

이벤트별 메모리 사용량

MySQL의 memory_summary_global_by_event_name은 MySQL 서버의 다양한 이벤트에 의한 메모리 사용량에 대한 정보를 제공하는 성능 스키마 테이블을 참조합니다. 이 테이블은 정렬에 사용되는 메모리, 해시 테이블에 사용되는 메모리, 쿼리 결과를 저장하는 데 사용되는 메모리 등과 같은 다양한 이벤트 및 이벤트 범주에 대한 메모리 사용에 대한 데이터를 저장합니다. 이 테이블의 데이터는 전역 수준에서 집계되며 MySQL 서버에서 가장 큰 메모리 소비자를 식별하는 데 사용할 수 있습니다. 이 정보는 메모리 사용을 최적화하고 성능을 향상시키는 데 유용합니다.

info

📌 NOTE mysql, percona 8.0 이상, mariadb 10.5.2 이상에서 지원