토토 사이트
모듈은 서버에서 실행 한 모든 SQL 문의 계획 및 실행 통계 추적 수단을 제공합니다.
추가하여 모듈을로드해야합니다토토 사이트
toshared_preload_librariesinpostgresql.conf
11896_12145compute_query_id로 설정되었습니다auto
또는on
또는 쿼리 식별자를 계산하는 타사 모듈이로드되었습니다.
언제토토 사이트
활성화되어 서버의 모든 데이터베이스에서 통계를 추적합니다. 이러한 통계에 액세스하고 조작하기 위해 모듈은보기를 제공합니다토토 사이트
and토토 사이트_info
및 유틸리티 함수토토 사이트_reset
and토토 사이트
. 이들은 전 세계적으로 사용할 수 없지만의 특정 데이터베이스에 대해 활성화 할 수 있습니다.확장 생성 토토 사이트
.
토토 사이트
보기#The statistics gathered by the module are made available via a view named토토 사이트
. 이보기에는 데이터베이스 ID, 사용자 ID, 쿼리 ID와 최상위 문장인지 여부의 각각의 별개의 조합에 대해 하나의 행이 포함되어 있습니다 (모듈이 추적 할 수있는 최대 수의 고유 한 명령문까지). 보기의 열은에 표시됩니다.테이블 F.21.
표 F.21. 토토 사이트
열
열 유형 설명 |
---|
진술을 실행 한 사용자의 OID |
진술이 실행 된 데이터베이스의 OID |
쿼리가 최상위 명령문으로 실행 된 경우 true (항상 true if |
동일한 정규화 된 쿼리를 식별하는 해시 코드. |
대표 성명서의 텍스트 |
성명서가 계획된 횟수 (if |
진술을 계획하는 데 소요되는 총 시간 (if |
진술을 계획하는 최소 시간, 밀리 초. 이 필드는 0이면 |
진술을 계획하는 최대 시간, 밀리 초. 이 필드는 0이면 |
진술을 계획하는 평균 시간 (if |
인구 표준 시간의 시간 편차, 진술을 계획하는 데 소요되는 시간의 편차 (if |
성명서가 실행 된 횟수 |
진술을 실행하는 데 소요되는 총 시간, 밀리 초 |
명령문을 실행하는 데 소비 된 최소 시간, 밀리 초 내 에서이 필드는이 명세서가 처음 실행 된 후 처음으로 실행될 때까지 0이됩니다 |
명령문을 실행하는 데 소비 된 최대 시간, 밀리 초 내 에서이 필드는이 명세서가 처음 실행 된 후 처음으로 실행될 때까지 0이됩니다 |
진술을 실행하는 데 소요되는 평균 시간, 밀리 초 |
진술을 실행하는 데 소요되는 시간의 인구 표준 편차, 밀리 초 |
성명서에 의해 검색되거나 영향을받는 총 행 수 |
문의 공유 블록 캐시의 총 수 |
성명서에 의해 읽은 총 공유 블록 수 |
성명서에 의해 더러운 공유 블록의 총 수 |
성명서에 의해 작성된 공유 블록의 총 수 |
성명서별 로컬 블록 캐시의 총 수 |
성명서에 의해 읽은 총계 블록 수 |
성명서에 의해 더러워진 총 지역 블록의 총 수 |
진술서에 의해 작성된 총계 블록 수 |
진술서에 의해 읽은 총 임시 블록 수 |
진술에 의해 작성된 총 임시 블록 수 |
성명서가 공유 블록을 읽는 데 소비 된 총 시간 (iftrack_io_timing활성화되어 있습니다. 그렇지 않으면 0) |
성명서가 공유 블록을 작성하는 데 소요 된 총 시간 (iftrack_io_timing활성화되어 있고 그렇지 않으면 Zero) |
성명서가 현지 블록을 읽는 데 소비 된 총 시간 (iftrack_io_timing활성화되어 있고 그렇지 않으면 Zero) |
성명서가 현지 블록을 작성하는 데 소요 된 총 시간 (iftrack_io_timing활성화되어 있습니다. 그렇지 않으면 0) |
성명서가 임시 파일 블록을 읽는 데 소비 된 총 시간 (iftrack_io_timing활성화되어 있고 그렇지 않으면 Zero) |
성명서가 임시 파일 블록을 작성하는 데 소요 된 총 시간 (iftrack_io_timing활성화되어 있습니다. 그렇지 않으면 0) |
성명서에 의해 생성 된 WAL 레코드의 총 수 |
문에 의해 생성 된 WAL 전체 페이지 이미지의 총 수 |
바이트의 명세서에 의해 생성 된 WAL의 총 금액 |
성명서에 의해 정리 된 총 함수 수 |
JIT 코드 생성에 대한 명세서에 의해 지출 된 총 시간 |
함수가 상환되었습니다 |
임시 기능에 대한 진술에 의해 소비 된 총 시간, 밀리 초 |
진술이 최적화 된 횟수 |
진술서에 의해 지출 된 총 시간, 밀리 초의 최적화 |
코드 수가 방출되었습니다 |
방출 코드에 대한 명세서에 의해 지출 된 총 시간, 밀리 초 |
튜플 변형 함수의 총 수 성명서에 의해 고환 |
JIT 컴파일 튜플 변형 함수에 대한 진술에 의해 소비 된 총 시간 |
이 진술에 대한 통계 수집이 시작된 시간 |
Min/Max 통계 수집 시간 이이 진술 (필드에 시작되었습니다. |
보안상의 이유에 대해서는pg_read_all_stats
역할은 SQL 텍스트를 볼 수 있습니다.QueryId
다른 사용자가 실행 한 쿼리. 그러나 다른 사용자는 데이터베이스에보기가 설치된 경우 통계를 볼 수 있습니다.
Plannable Queries (즉,select
, 삽입
, 업데이트
, 삭제
및병합
) 및 유틸리티 명령은 단일로 결합됩니다토토 사이트
내부 해시 계산에 따라 동일한 쿼리 구조가있을 때마다 항목. 일반적으로 쿼리에 나타나는 문자 상수의 값을 제외하고는 의미 적으로 동등한 경우 두 쿼리 가이 목적에 대해 동일하게 간주됩니다.
끊임없는 교체 및에 대한 다음 세부 사항QueryId
만 적용 할 때만compute_query_id가 활성화되었습니다. 대신 외부 모듈을 사용하여 계산하는 경우QueryId
, 자세한 내용은 문서를 참조해야합니다.
쿼리를 다른 쿼리와 일치시키기 위해 상수의 값이 무시되면 상수는와 같은 매개 변수 기호로 대체됩니다.$ 1
, in토토 사이트
디스플레이. 나머지 쿼리 텍스트는 특정 쿼리의 쿼리입니다.QueryId
토토 사이트
Entry.
정규화를 적용 할 수있는 쿼리는 일정한 값으로 관찰 될 수 있습니다토토 사이트
, 특히 높은 입력 거래가있을 때. 이런 일이 발생할 가능성을 줄이려면 증가하는 것을 고려하십시오토토 사이트.max
. 그만큼토토 사이트_info
보기, 아래에서 논의섹션 F.30.2, 입력 거래에 대한 통계를 제공합니다.
경우에 따라 눈에 띄게 다른 텍스트가있는 쿼리가 단일로 병합 될 수 있습니다토토 사이트
입력. 일반적으로 이것은 의미 적으로 동등한 쿼리에 대해서만 발생하지만 해시 충돌 가능성이 적 으면 관련없는 쿼리가 하나의 항목으로 병합됩니다. (그러나 다른 사용자 또는 데이터베이스에 속하는 쿼리에는 발생할 수 없습니다.)
이후QueryId
해시 값은 쿼리의 패스 분석 후 표현에 계산됩니다. 반대도 가능합니다. 동일한 텍스트가있는 쿼리는 별도의 항목으로 나타날 수 있습니다.search_path
설정.
소비자토토 사이트
사용하기를 원할 수 있습니다QueryId
(아마도dbid
anduserID
) 쿼리 텍스트보다 각 항목에 대해보다 안정적이고 신뢰할 수있는 식별자로서. 그러나의 안정성에 대한 보장이 제한되어 있음을 이해하는 것이 중요합니다.QueryId
해시 값. 식별자는 패스트리 분석 후 트리에서 파생되므로 그 값은 무엇 보다도이 표현에 나타나는 내부 객체 식별자의 함수입니다. 이것은 반 직관적 인 영향을 미칩니다. 예를 들어,토토 사이트
두 쿼리의 실행 사이에 삭제되고 재현 된 테이블을 참조하면 두 개의 명백한 동일 쿼리가 뚜렷하다고 생각합니다. 해싱 프로세스는 또한 기계 아키텍처 및 플랫폼의 다른 측면의 차이에 민감합니다. 또한, 가정하는 것은 안전하지 않습니다.QueryId
의 주요 버전에서 안정적입니다PostgreSQL.
물리적 WAL 재생을 기반으로 복제에 참여하는 두 서버QueryId
동일한 쿼리의 값. 그러나 논리적 복제 체계는 모든 관련 세부 사항에서 복제본을 동일하게 유지하겠다고 약속하지 않으므로QueryId
일련의 논리적 복제품에 걸쳐 비용을 축적하는 데 유용한 식별자가 아닙니다. 의심스러운 경우 직접 테스트를 권장합니다.
일반적으로 가정 할 수 있습니다.QueryId
값은 마이너 버전 릴리스 사이에서 안정적입니다PostgreSQL, 인스턴스가 동일한 기계 아키텍처에서 실행되고 카탈로그 메타 데이터 세부 정보가 일치하도록 제공합니다. 호환성은 최후의 수단으로서 마이너 버전 사이에서만 끊어집니다.
대표 쿼리 텍스트의 상수를 대체하는 데 사용되는 매개 변수 기호는 다음 숫자에서 가장 높은 다음 숫자에서 시작합니다$
n
원래 쿼리 텍스트의 매개 변수 또는$ 1
없는 경우. 어떤 경우에는이 번호에 영향을 미치는 숨겨진 매개 변수 기호가있을 수 있습니다. 예를 들어,PL/PGSQL숨겨진 매개 변수 기호를 사용하여 함수 로컬 변수 값을 쿼리에 삽입하여 APL/PGSQL문장i + 1을 J로 선택하십시오
대표 텍스트와 같은 대표가 있습니다선택 i + $ 2
.
대표 쿼리 텍스트는 외부 디스크 파일에 보관되어 공유 메모리를 소비하지 않습니다. 따라서 매우 긴 쿼리 텍스트조차도 성공적으로 저장할 수 있습니다. 그러나 많은 긴 쿼리 텍스트가 축적되면 외부 파일이 무의식적으로 커질 수 있습니다. 그런 경우 복구 방법으로토토 사이트
쿼리 텍스트를 버릴 수 있습니다.토토 사이트
보기가 표시됩니다쿼리
필드, 각각의 통계는 각각QueryId
보존됩니다. 이런 일이 발생하면 감소를 고려하십시오토토 사이트.max
재발을 방지하기 위해.
계획
and콜
계획 및 실행 통계가 각각의 종말 단계에서 업데이트되고 성공적인 운영에 대해서만 업데이트되기 때문에 항상 일치 할 것으로 예상되는 것은 아닙니다. 예를 들어, 명세서가 성공적으로 계획되었지만 실행 단계에서 실패하면 계획 통계 만 업데이트됩니다. 캐시 된 계획이 사용되어 계획이 건너 뜁니다. 실행 통계 만 업데이트됩니다.
토토 사이트_info
보기#통계토토 사이트
모듈 자체가 추적되어 이름이 지정된 뷰를 통해 사용할 수 있습니다토토 사이트_info
. 이보기에는 단일 행 만 포함됩니다. 보기의 열은에 표시됩니다.표 F.22.
표 F.22. 토토 사이트_info
열
열 유형 설명 |
---|
총 시간 |
모든 통계의 시간 |
PG_STAT_STATEMENTS_RESET (userID OID, DBID OID, QUERYID BIGINT, MINMAX_ONLY BOOLEAN) 시간대와 함께 타임 스탬프를 반환
토토 사이트_reset
지금까지 수집 한 통계 폐기토토 사이트
지정된 사람에 해당userID
, dbid
andQueryId
. 매개 변수가 지정되지 않은 경우 기본값0
(유효하지 않은) 각각에 사용되며 다른 매개 변수와 일치하는 통계가 재설정됩니다. 매개 변수가 지정되지 않았거나 지정된 모든 매개 변수가0
(유효하지 않음) 모든 통계를 폐기합니다. 의 모든 통계가있는 경우토토 사이트
보기가 폐기되면의 통계도 재설정됩니다.토토 사이트_info
보기. 언제minmax_only
istrue
최소 및 최대 계획 및 실행 시간의 값 만 재설정됩니다 (예 :min_plan_time
, max_plan_time
, min_exec_time
및max_exec_time
필드). 의 기본값minmax_only
매개 변수는거짓
. 수행 된 마지막 최소/최대 재설정의 시간에 표시됩니다minmax_stats_since
44999_45015토토 사이트
보기. 이 함수는 재설정 시간을 반환합니다. 이번에는stats_reset
필드토토 사이트_info
보기 또는 tominmax_stats_since
필드토토 사이트
해당 재설정이 실제로 수행 된 경우보기. 기본적 으로이 기능은 슈퍼 사용자 만으로만 실행할 수 있습니다. 를 사용하여 다른 사람에게 액세스 권한이 부여 될 수 있습니다.grant
.
토토 사이트 (ShowText Boolean) 레코드를 반환
the토토 사이트
보기는 이름이 지정된 함수의 관점에서 정의됩니다토토 사이트
. 고객이 전화를 걸 수 있습니다토토 사이트
직접 기능하고 지정하여showtext : = false
쿼리 텍스트를 생략하십시오 (즉,out
보기에 해당하는 인수쿼리
열이 널을 반환합니다). 이 기능은 불확실한 길이의 쿼리 텍스트를 반복적으로 검색하는 오버 헤드를 피할 수있는 외부 도구를 지원하기위한 것입니다. 이러한 도구는 대신 각 항목 자체에 대해 관찰 된 첫 번째 쿼리 텍스트를 캐시 할 수 있습니다.토토 사이트
자체는 필요에 따라 쿼리 텍스트를 검색합니다. 서버는 파일에 쿼리 텍스트를 저장하기 때문에이 접근법은 물리적 I/O를 반복적으로 조사하기 위해를 줄일 수 있습니다.토토 사이트
데이터.
토토 사이트.max
(정수
)토토 사이트.max
는 모듈에서 추적 한 최대 명령문 수입니다 (즉,의 최대 행 수토토 사이트
보기). 그보다 더 뚜렷한 진술이 관찰되면, 가장 잘 수행되지 않은 진술에 대한 정보는 폐기됩니다. 그러한 정보가 폐기 된 횟수는에서 볼 수 있습니다.토토 사이트_info
보기. 기본값은 5000입니다.이 매개 변수는 서버 시작시에만 설정할 수 있습니다.
토토 사이트.track
(enum
)토토 사이트.track
모듈에 의해 계산되는 진술서를 제어합니다. 지정TOP
최상위 진술을 추적하려면 (클라이언트가 직접 발행 한 것),all
또한 중첩 된 진술 (예 : 기능 내에서 호출 된 진술), 또는를 추적하려면없음
명령문 통계 수집을 비활성화하려면. 기본값은입니다.TOP
. 수퍼 유저만이 설정을 변경할 수 있습니다.
토토 사이트.track_utility
(부울
)토토 사이트.track_utility
모듈에서 유틸리티 명령을 추적하는지 여부를 제어합니다. 유틸리티 명령은 이외의 모든 명령입니다.select
, 삽입
, 업데이트
, 삭제
및병합
. 기본값은입니다.on
. 수퍼 유저만이 설정을 변경할 수 있습니다.
토토 사이트.track_planning
(부울
)토토 사이트.track_planning
모듈에 의해 계획 운영 및 지속 시간을 추적하는지 여부를 제어합니다. 이 매개 변수를 활성화하면 특히 동일한 쿼리 구조가있는 명령문이 소수의 숫자를 업데이트하기 위해 경쟁하는 많은 동시 연결에 의해 실행될 때 눈에 띄는 성능 페널티가 발생할 수 있습니다.토토 사이트
항목. 기본값은입니다.OFF
. 수퍼 유저만이 설정을 변경할 수 있습니다.
토토 사이트.save
(부울
)토토 사이트.save
서버 종료에서 명령문 통계를 저장할지 여부를 지정합니다. 경우OFF
그러면 통계는 서버 시작시 종료시 저장되거나 다시로드되지 않습니다. 기본값은입니다.on
. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf
파일 또는 서버 명령 줄에.
모듈은에 비례하는 추가 공유 메모리가 필요합니다.토토 사이트.max
. 이 메모리는 모듈이로드 될 때마다 소비됩니다.토토 사이트.track
로 설정되었습니다없음
.
이 매개 변수를 설정해야합니다postgresql.conf
. 일반적인 사용법은 다음과 같습니다.
# postgresql.conf shared_preload_libraries = '토토 사이트' compute_query_id = on 토토 사이트.max = 10000 토토 사이트.track = all
벤치 =# 선택 토토 사이트_reset (); $ pgbench -i 벤치 $ PGBENCH -C10 -T300 벤치 벤치 =# \ x 벤치 =# 쿼리 선택, 통화, total_exec_time, 행, 100.0 * shared_blks_hit / nullif (shared_blks_hit + shared_blks_read, 0) hit_percent PG_STAT_STATEMENTS에서 TOTAL_EXEC_TIME DESC LIMIT 5에 의해 주문됩니다. -[레코드 1] ---+------------------------------------------------------------------- 쿼리 | pgbench_branches 업데이트 bbalance = bbalance + $ 1 bid = $ 2 전화 | 3000 Total_exec_time | 25565.855387 줄 | 3000 hit_percent | 100.0000000000000000 -[레코드 2] ---+------------------------------------------------------------------- 쿼리 | PGBENCH_TELLERS 업데이트 TBALANCE = TBALANCE + $ 1 여기서 tid = $ 2 전화 | 3000 Total_exec_time | 20756.669379 줄 | 3000 hit_percent | 100.0000000000000000 -[레코드 3] ---+--------------------------------------------------------------------- 쿼리 | stdin에서 pgbench_accounts를 복사하십시오 전화 | 1 Total_exec_time | 291.865911 줄 | 100000 hit_percent | 100.0000000000000000 -[레코드 4] ---+-------------------------------------------------------------------- 쿼리 | PGBENCH_ACCOUNTS 업데이트 세트 Abalance = Abalance + $ 1 Aid = $ 2 전화 | 3000 Total_exec_time | 271.232977 줄 | 3000 hit_percent | 98.8454011741682975 -[레코드 5] ---+------------------------------------------------------------------ 쿼리 | ALTER TABLE PGBENCH_ACCOUTTS 기본 키 추가 (AID) 전화 | 1 Total_exec_time | 160.588563 줄 | 0 hit_percent | 100.0000000000000000 벤치 =# 토토 사이트에서 s로 토토 사이트_reset (0,0, s.queryid)을 선택하십시오 여기서 s.query = '업데이트 pgbench_branches는 bbalance = bbalance + $ 1 여기서 bid = $ 2'; 벤치 =# 쿼리 선택, 통화, total_exec_time, 행, 100.0 * shared_blks_hit / nullif (shared_blks_hit + shared_blks_read, 0) hit_percent PG_STAT_STATEMENTS에서 TOTAL_EXEC_TIME DESC LIMIT 5에 의해 주문됩니다. -[레코드 1] ---+------------------------------------------------------------------- 쿼리 | PGBENCH_TELLERS 업데이트 TBALANCE = TBALANCE + $ 1 여기서 tid = $ 2 전화 | 3000 Total_exec_time | 20756.669379 줄 | 3000 hit_percent | 100.0000000000000000 -[레코드 2] ---+------------------------------------------------------------------- 쿼리 | stdin에서 pgbench_accounts를 복사하십시오 전화 | 1 Total_exec_time | 291.865911 줄 | 100000 hit_percent | 100.0000000000000000 -[레코드 3] ---+--------------------------------------------------------------------- 쿼리 | PGBENCH_ACCOUNTS 업데이트 세트 Abalance = Abalance + $ 1 Aid = $ 2 전화 | 3000 Total_exec_time | 271.232977 줄 | 3000 hit_percent | 98.8454011741682975 -[레코드 4] ---+-------------------------------------------------------------------- 쿼리 | ALTER TABLE PGBENCH_ACCOUTTS 기본 키 추가 (AID) 전화 | 1 Total_exec_time | 160.588563 줄 | 0 hit_percent | 100.0000000000000000 -[레코드 5] ---+------------------------------------------------------------------ 쿼리 | 진공 분석 PGBENCH_ACCOUTTS 전화 | 1 Total_exec_time | 136.448116 줄 | 0 hit_percent | 99.9201915403032721 벤치 =# 선택 PG_STAT_STATEMENTS_RESET (0,0,0); 벤치 =# 쿼리 선택, 통화, total_exec_time, 행, 100.0 * shared_blks_hit / nullif (shared_blks_hit + shared_blks_read, 0) hit_percent PG_STAT_STATEMENTS에서 TOTAL_EXEC_TIME DESC LIMIT 5에 의해 주문됩니다. -[레코드 1] ---+--------------------------------------------------------------------------- 쿼리 | PG_STAT_STATEMENTS_RESET을 선택하십시오 (0,0,0) 전화 | 1 Total_exec_time | 0.189497 줄 | 1 hit_percent | -[레코드 2] ---+--------------------------------------------------------------------------- 쿼리 | 선택 쿼리, 통화, Total_exec_time, 행, $ 1 * shared_blks_hit / + | nullif (shared_blks_hit + shared_blks_read, $ 2) hit_percent + | PG_STAT_STATEMENTS에서 TOTAL_EXEC_TIME DESC LIMIT $ 3 전화 | 0 Total_exec_time | 0 줄 | 0 hit_percent |
Takahiro Itagaki<itagaki.takahiro@oss.ntt.co.jp
. Peter Geoghegan에 의해 추가 된 쿼리 정규화<peter@2ndquadrant.com
.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면