본문 바로가기
WIKI 기술 지식 베이스

MySQL Database Monitoring 고급 설정

원문 보기 위키 갱신

MySQL용 Database Monitoring을 더 세밀하게 튜닝하는 방법을 설명드릴게요. 이 페이지에서는 performance_schema 테이블 유지 관리, 동일한 테이블 처리, 샘플링 비율 조정 방법을 다룹니다.

출처: 문서

본문

events_statements_summary_by_digest 잘라내기 (Truncating)

일부 워크로드는 performance_schema의 테이블에 대한 유지 관리가 필요해요. 쿼리 통계는 performance_schema.events_statements_summary_by_digest 테이블에 집계되는데, 이 테이블에는 행 수 제한이 있어요. 이 제한은 performance_schema_digests_size 시스템 변수로 지정됩니다. 테이블이 가득 차면 새 쿼리 digest는 null 스키마와 null 쿼리 digest를 가진 catch-all 행에 기록되어, 에이전트가 해당 행을 구성하는 쿼리들을 구분하지 못하게 돼요.

정확한 쿼리별 메트릭이 유실되는 것을 막으려면, 유지 관리 단계로 이 테이블을 주기적으로 잘라내서 새 쿼리를 모두 수집할 수 있게 해 주세요.

TRUNCATE performance_schema.events_statements_summary_by_digest;

잘라내기의 주기를 정하려면 아래 쿼리를 실행해서 초당 이 catch-all 행으로 보내지는 statement 수를 확인해 보세요. 값이 0보다 크면 테이블이 가득 찬 것이므로 잘라내기를 해야 해요.

SHOW STATUS LIKE 'Performance_schema_digest_lost';

동일한 테이블이 많은 경우 처리하기

테이블 정의가 이름만 빼고 동일하도록 데이터베이스를 여러 테이블로 분할하면 정규화된 쿼리가 대량으로 생성될 수 있어요.

SELECT * FROM daily_aggregates_001
SELECT * FROM daily_aggregates_002
SELECT * FROM daily_aggregates_003

이런 경우 replace_digits 옵션을 사용해 이러한 쿼리를 하나의 정규화된 쿼리로 추적하세요. 그러면 해당 쿼리들의 모든 메트릭이 하나의 쿼리로 합쳐집니다.

SELECT * FROM daily_aggregates_?

Datadog Agent의 데이터베이스 인스턴스 구성에 replace_digits 옵션을 추가하세요.

init_config:

instances:
  - dbm: true
    ...
    replace_digits: true

샘플링 비율 높이기

비교적 빈도가 낮거나 빠르게 실행되는 쿼리가 있다면 collection_interval 값을 낮춰 샘플을 더 자주 수집함으로써 샘플링 비율을 높여 보세요.

Datadog Agent의 데이터베이스 인스턴스 구성에서 collection_interval을 설정하세요. 기본값은 1입니다. 값을 더 작은 간격으로 낮춰 주세요.

instances:
  - dbm: true
    ...
    query_samples:
        collection_interval: 0.1

더 알아보기 (Learn more)