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

데이터베이스 스키마 탐색하기

원문 보기 위키 갱신

스키마(Schemas)는 데이터 모델의 성능, 사용량, 변경 사항을 모니터링할 수 있게 해주므로 문제를 더 빨리 식별하고 해결할 수 있어요.

출처: 문서

본문

참고: Schema Tracking은 PostgreSQL, SQL Server, MySQL에서 사용할 수 있어요.

구성 (Configuration)

스키마 기능을 활성화하려면 Database Monitoring 구성에 collect_schemas 파라미터를 추가하세요:

init_config:
instances:
  - dbm: true
    host: localhost
    port: 5432
    username: datadog
    password: 'ENC[datadog_user_database_password]'
    collect_schemas:
      enabled: true
    ## Optional: Connect to a different database if needed for `custom_queries`
    # dbname: '<DB_NAME>'

스키마 수집 튜닝하기

collect_schemas에서 사용할 수 있는 옵션과 그 기본값은 데이터베이스 엔진마다 달라요.

Postgres

옵션 기본값 설명
enabled true 스키마 수집을 비활성화하려면 false로 설정하세요. Datadog Agent 버전 7.80.0 이상에서 기본적으로 활성화돼요.
max_tables 300 에이전트가 인스턴스에서 수집하는 최대 테이블 수. 이 제한을 넘는 테이블은 수집되지 않아요.
max_columns 50 에이전트가 테이블당 수집하는 최대 컬럼 수.
max_query_duration 60 스키마 정보를 수집하는 쿼리의 최대 지속 시간(초).
collection_interval 600 스키마 수집 실행 사이의 간격(초).
collect_schemas:
  enabled: true
  max_tables: 1000

참고: 파티션이 PostgreSQL의 max_tables 제한에 포함되는지 여부는 파티셔닝 방법에 따라 달라요. 선언적 파티셔닝(PARTITION BY, PostgreSQL 10 이상)은 파티션 수와 관계없이 테이블을 한 번만 계산하지만, 상속 파티셔닝(INHERITS, PostgreSQL 9.6의 유일한 옵션)은 부모와 각 자식을 개별적으로 계산해요. 즉 상속 파티셔닝 데이터베이스는 예상보다 훨씬 적은 논리 테이블로 기본 제한인 300에 도달해 다른 테이블을 밀어낼 수 있어요. Schemas 페이지에 테이블이 없다면 상속 파티셔닝이 있는지 확인하고 그에 따라 max_tables를 높이세요.

max_tables를 높이면 각 수집 실행의 비용이 증가해요. 테이블 수가 많은 인스턴스에서는 데이터베이스의 부하를 줄이기 위해 max_query_duration과 collection_interval도 높이는 것을 고려하세요.

SQL Server

옵션 기본값 설명
enabled false 스키마 수집을 활성화하려면 true로 설정하세요.
max_tables 300 에이전트가 인스턴스에서 수집하는 최대 테이블 수. 이 제한을 넘는 테이블은 수집되지 않아요.
collection_interval 600 스키마 수집 실행 사이의 간격(초).
collect_schemas:
  enabled: true
  max_tables: 1000

MySQL

옵션 기본값 설명
enabled false 스키마 수집을 활성화하려면 true로 설정하세요.
collection_interval 600 스키마 수집 실행 사이의 간격(초).
max_execution_time 60 스키마 정보를 수집하는 쿼리의 최대 지속 시간(초).
collect_schemas:
  enabled: true
  collection_interval: 300

테이블 개요 (Tables overview)

Tables 개요는 데이터베이스 전반의 모든 추적 테이블을 테이블 이름별로 그룹화해 다음 컬럼과 함께 나열해요:

컬럼 설명
# Variants 모든 호스트에서 테이블의 고유 버전 수.
# Instances 모든 호스트에서 테이블 인스턴스의 총 수. 예를 들어 테이블에 두 개의 변형이 있고 각각 7개와 8개의 인스턴스가 있다면 총 인스턴스 수는 15예요.
# Columns 모든 호스트에서 테이블의 모든 변형에 걸친 고유 컬럼 수. 예를 들어 한 변형에 A, B, C 컬럼이 있고 다른 변형에 A, B, D가 있다면 총 고유 컬럼은 4개(A, B, C, D)가 돼요.
Databases 모든 호스트에서 이 테이블을 포함하는 모든 데이터베이스의 이름.
Schemas 모든 호스트에서 이 테이블이 나타나는 스키마.
Database Hosts 이 테이블이 있는 호스트.

각 테이블 행을 펼치면 테이블 변형과 다음 컬럼을 볼 수 있어요:

컬럼 설명
Variant ID 이 테이블의 변형(버전)에 대한 고유 식별자.
# Instances 이 변형에 대한 이 테이블의 인스턴스 수.
# Columns 이 테이블 변형의 고유 컬럼 수.
Databases 이 테이블 변형을 포함하는 데이터베이스의 알파벳순 목록.
Schemas 이 테이블 변형을 포함하는 스키마의 알파벳순 목록.
Database Hosts 이 테이블 변형이 나타나는 호스트의 알파벳순 목록.

테이블 변형 세부정보 보기

테이블 변형에 대한 자세한 정보를 보려면 그 행을 클릭해 테이블 변형 패널을 여세요.

이 패널은 변형(버전)에 대한 정보를 보여줘요. 예를 들면:

  • Definition: 이 테이블 변형의 컬럼, 인덱스, 외래 키를 포함해요.
  • Table Instances: 이 테이블 변형과 연결된 모든 인스턴스.
  • Metrics: 테이블 크기, 순차 스캔 및 기타 관련 메트릭(기본적으로 최근 7일).
  • Queries: 이 테이블 변형과 관련된 쿼리(기본적으로 최근 7일).
  • Changes: 이 테이블 변형에 영향을 주는 스키마 변경 사항(기본적으로 최근 7일).

테이블 인스턴스 세부정보 보기

특정 테이블 인스턴스의 세부 정보를 보려면 테이블 변형 패널의 Table Instances 탭으로 이동해 행을 클릭하세요.

이렇게 하면 테이블 변형 패널과 유사한 뷰가 열리고, 선택한 테이블 인스턴스에 대해 다음 정보가 표시돼요:

  • Definition: 이 테이블 인스턴스의 컬럼, 인덱스, 외래 키를 포함해요.
  • Metrics: 테이블 크기, 순차 스캔 및 기타 관련 메트릭(기본적으로 최근 7일).
  • Queries: 이 테이블 인스턴스와 관련된 쿼리(기본적으로 최근 7일).
  • Changes: 이 테이블 인스턴스에 영향을 주는 스키마 변경 사항(기본적으로 최근 7일).

권장 사항 (Recommendations)

권장 사항(Recommendations)은 테이블 전반의 스키마 최적화를 위한 잠재적 기회를 강조해요.

각 권장 사항에는 다음이 포함돼요:

  • 감지된 문제(예: 누락된 기본 키 또는 비효율적인 인덱스).
  • 문제가 왜 중요하고 데이터베이스 성능이나 무결성에 어떤 영향을 미치는지에 대한 설명.
  • 제안된 수정 사항(종종 영향을 받는 데이터베이스에서 실행할 수 있는 SQL 문장).

권장 사항은 집계(페이지 상단)와 테이블별로 제공되며, 각 적용 대상 테이블에 해당 권장 사항이 표시돼요. 자세한 내용은 권장 사항을 참고하세요.

메트릭 개요 (Metrics overview)

Metrics 개요는 각 DBMS에서 추적되는 테이블과 관련된 메트릭에 대한 대시보드를 표시해요.

각 대시보드에는 다음 메트릭이 포함돼요:

  • Total Table Instance Count
  • Fastest Changing Instances (%)
  • Fastest Changes Instances (bytes)
  • Most Accessed Instances
  • Largest Instances
  • Instances with Most Live Rows
  • Instances with the Largest Index Sizes
  • Instances with Access Exclusive Locks
  • Instances with Most Dead Rows
  • Instances with the Longest Last Vacuum Age
  • Instances with the Longest Last Auto Vacuum Age

더 알아보기 (Learn more)