Campaign Classic v7 - db 모듈 pg_stat_statements의 용도 및 사용

DB(데이터베이스) 모듈의 목적 및 사용에 대해 알아보기 pg_stat_statements Adobe Campaign Classic v7에서.

설명 description

환경

Adobe Campaign Classic v7(ACC v7)

문제/증상

  1. db 모듈이란? pg_stat_statements?

  2. 클라이언트가 활성화하도록 요청한 이유는 무엇입니까?

  3. 활성화 방법

해결 방법 resolution

  1. pg_stat_statements 모듈은 서버에서 실행되는 모든 SQL 문의 실행 통계를 추적하는 수단을 제공합니다.

    모듈은 를 추가하여 로드해야 합니다. pg_stat_statementsshared_preload_libraries 위치: postgresql.conf추가 공유 메모리가 필요하기 때문입니다.

    즉, 모듈을 추가하거나 제거하려면 서버를 다시 시작해야 합니다.

    링크 https://www.postgresql.org/docs/9.4/pgstatstatements.html

  2. 이 테이블에서 시간이 오래 걸리는 쿼리를 모니터링할 수 있는 보기 유형 스키마를 구현하려면

    이렇게 하면 클라이언트가 이러한 기능을 조정하고 성능을 최적화할 수 있습니다.

    이 확장은 쿼리 실행에 대한 지표(가장 자주 실행되는 쿼리와 각 쿼리에 걸리는 시간)를 제공합니다.

  3. pg_stat_statements

    1. Postgres 버전에 대한 공식 PostgreSQL 구성 패키지가 설치되어 있는지 확인합니다.

      code language-none
      $ dpkg -l | grep postgres
      postgresql-contrib-9.3
      

      설치되지 않은 경우 설치합니다.

      code language-none
      $ apt-get install postgresql-contrib-9.3
      
    2. 변경 postgresql.conf 시작할 때 모듈을 미리 로드합니다.

      기본값: shared_preload_libraries = ''

      신규: shared_preload_libraries = 'pg_stat_statements'

      두 가지를 모두 사용하는 경우 pg_stat_statementsauto_explain, 사용 1개 녹화하고 쉼표로 구분합니다.

      code language-none
      shared_preload_libraries = 'auto_explain,pg_stat_statements'
      
    3. 모니터링할 데이터베이스에서 다음을 실행합니다. CREATE 쿼리:

      에 대한 확장 생성이 필요하지 않음 auto_explain, 에만 해당 pg_stat_statements.

      code language-none
      psql
      postgres=# \c mydatabase
      mydatabase=# CREATE EXTENSION pg_stat_statements;
      
    4. 의 맞춤화된 OPTIONS 섹션에서 postgresql.conf를 클릭하고 줄을 추가합니다.

      code language-none
      pg_stat_statements.max = 5000
      pg_stat_statements.track = all
      pg_stat_statements.save = on
      
    5. postgresql 서비스를 다시 시작합니다.

    예: 데이터베이스에서 비용이 가장 많이 드는 상위 5개의 쿼리를 가져옵니다.

    code language-none
    SELECT query, calls, total_time, rows, 100.0*shared_blks_hit/nullif(shared_blks_hit+shared_blks_read,0) AS hit_percent
    from pg_stat_statements as s inner join pg_database as d on d.oid = s.dbid
    where d.datname = 'Database_Name'
    order by total_time desc limit 5;
    
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f