MariaDB Database Monitoring 고급 설정
MariaDB용 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 옵션을 사용해 이러한 쿼리를 하나의 정규화된 쿼리로 추적하세요. 그러면 해당 쿼리들의 모든 메트릭이 하나의 쿼리로 합쳐집니다. 이렇게 하면 DBM 쿼터에 집계되는 서로 다른 정규화된 쿼리 수가 줄어들고, MariaDB performance schema 쪽의 digest 제한에는 영향을 주지 않아요.
SELECT * FROM daily_aggregates_?
Datadog Agent의 데이터베이스 인스턴스 구성에서 obfuscator_options 아래에 replace_digits 옵션을 추가하세요.
init_config:
instances:
- dbm: true
...
obfuscator_options:
replace_digits: true
샘플링 비율 높이기
비교적 빈도가 낮거나 빠르게 실행되는 쿼리가 있다면 collection_interval 값을 낮춰 샘플을 더 자주 수집함으로써 샘플링 비율을 높여 보세요.
Datadog Agent의 데이터베이스 인스턴스 구성에서 collection_interval을 설정하세요. 기본값은 1입니다. 값을 더 작은 간격으로 낮춰 주세요.
instances:
- dbm: true
...
query_samples:
collection_interval: 0.1
참고: 같은 데이터베이스에 대해 MariaDB 통합 점검을 여러 인스턴스로 실행한다면 모든 인스턴스에 동일한 collection_interval 값을 사용하세요. 같은 메트릭에 서로 다른 수집 간격을 섞어 쓰면 메트릭 이상이 발생할 수 있어요.