PostgreSQL을 관리하는 DBA를 위한 쿼리다.
1. 역할 생성
create role dbmaster01 with password 'somepassword' login; grant pg_monitor to dbmaster01;
2. 현재 파라미터 설정과 기본 값 표시
create role dbmaster01 with password 'somepassword' login; grant pg_monitor to dbmaster01;
파라미터 이름 | 적용 유형 | 설명 |
---|---|---|
| 동적 | 애플리케이션 이름이 통계 및 로그에 표시되도록 설정합니다. |
| 동적 | 어레이의 NULL 요소 입력을 활성화합니다. |
| 동적 | 클라이언트 인증 완료를 위한 최대 허용 시간을 설정합니다. |
| 동적 | autovacuum 서브프로세스를 시작합니다. |
| 동적 | 분석 전 삽입, 업데이트 또는 삭제되는 튜플 수를 reltuples 분수 값으로 지정합니다. |
| 동적 | 분석 전 삽입, 업데이트 또는 삭제되는 튜플의 최소 수를 지정합니다. |
| 동적 | autovacuum 실행 간 절전 시간을 지정합니다. |
| 동적 | autovacuum에서 vacuum 코스트 지연 시간(밀리초)을 지정합니다. |
| 동적 | autovacuum에서 지연 시간 이전에 이용 가능한 vacuum 코스트 값을 지정합니다. |
| 동적 | vacuum 전 업데이트 또는 삭제되는 튜플 수를 reltuples 분수 값으로 지정합니다. |
| 동적 | vacuum 전 업데이트 또는 삭제되는 튜플의 최소 수를 지정합니다. |
| 동적 | 문자열 리터럴에서 백슬래시(\)의 허용 여부를 설정합니다. |
| 동적 | 라운드 사이에 백그라운드 라이터의 절전 시간을 지정합니다. |
| 동적 | 백그라운드 라이터가 라운드마다 LRU 페이지를 작성할 최대 수를 지정합니다. |
| 동적 | 라운드마다 해제할 평균 버퍼 사용량의 배수를 지정합니다. |
| 동적 | bytea의 출력 형식을 설정합니다. |
| 동적 | CREATE FUNCTION 도중 함수 본문을 검사합니다. |
| 동적 | 체크포인트 도중 변경된 버퍼 플러시에 사용된 시간으로 체크포인트 간격의 분수 값입니다. |
| 동적 | 로그 세그먼트에서 자동 WAL 체크포인트의 최대 간격을 설정합니다. |
| 동적 | 자동 WAL 체크포인트 사이의 최대 시간을 설정합니다. |
| 동적 | 체크포인트 세그먼트가 이 파라미터 값보다 더 빨리 채워지는 경우 경고를 활성화합니다. |
| 동적 | 클라이언트 문자 세트 인코딩을 설정합니다. |
| 동적 | 클라이언트에게 보여지는 메시지 수준을 설정합니다. |
| 동적 | 트랜잭션 커밋부터 디스크에 대한 WAL 플러시까지 지연 시간(밀리초)을 설정합니다. |
| 동적 | commit_delay 실행 전에 동시에 열려 있는 트랜잭션 최소 개수를 설정합니다. |
| 동적 | planner가 제약 조건을 사용하여 쿼리를 최적화하도록 활성화합니다. |
| 동적 | 인덱스 스캔 중 각 인덱스 항목을 처리하는 데 따른 planner의 예상 코스트를 설정합니다. |
| 동적 | 각 연산자 또는 함수 호출을 처리하는 데 따른 planner의 예상 코스트를 설정합니다. |
| 동적 | 각 튜플(행)을 처리하는 데 따른 planner의 예상 코스트를 설정합니다. |
| 동적 | planner가 예상하는 검색할 커서 행의 분수 값을 설정합니다. |
| 동적 | 날짜와 시간 값에 대한 표시 형식을 설정합니다. |
| 동적 | 교착 상태 여부를 확인하기 이전 잠금 대기 시간을 설정합니다. |
| 동적 | 구문과 실행 계획 트리를 들여쓰기 하여 표시합니다. |
| 동적 | 각 쿼리의 구문 분석 트리를 기록합니다. |
| 동적 | 각 쿼리의 실행 계획을 기록합니다. |
| 동적 | 각 쿼리에서 재작성된 구문 분석 트리를 기록합니다. |
| 동적 | 기본 통계 대상을 설정합니다. |
| 동적 | 테이블과 인덱스를 생성할 기본 테이블스페이스를 설정합니다. |
| 동적 | 새로운 트랜잭션의 기본 deferrable 상태를 설정합니다. |
| 동적 | 새로운 트랜잭션마다 트랜잭션 격리 수준을 설정합니다. |
| 동적 | 새로운 트랜잭션의 기본 읽기 전용 상태를 설정합니다. |
| 동적 | 새로운 테이블을 생성할 때 OID가 기본적으로 포함됩니다. |
| 동적 | 디스크 캐시 크기에 대한 planner의 가정을 설정합니다. |
| 동적 | 디스크 하위 시스템에서 효율적으로 동시에 처리할 수 있는 요청 수를 지정합니다. |
| 동적 | planner가 비트맵 스캔 계획을 사용할 수 있도록 활성화합니다. |
| 동적 | planner가 해시된 집계 계획을 사용할 수 있도록 활성화합니다. |
| 동적 | planner가 해시 조인 계획을 사용할 수 있도록 활성화합니다. |
| 동적 | planner가 인덱스 스캔 계획을 사용할 수 있도록 활성화합니다. |
| 동적 | planner가 구체화를 사용할 수 있도록 활성화합니다. |
| 동적 | planner가 병합 조인 계획을 사용할 수 있도록 활성화합니다. |
| 동적 | planner가 중첩 루프 조인 계획을 사용할 수 있도록 활성화합니다. |
| 동적 | planner가 순차적 스캔 계획을 사용할 수 있도록 활성화합니다. |
| 동적 | planner가 명시적 정렬 단계를 사용할 수 있도록 활성화합니다. |
| 동적 | planner가 TID 스캔 계획을 사용할 수 있도록 활성화합니다. |
| 동적 | 일반 문자열 리터럴의 백슬래시(\) 이스케이프에 대해 경고합니다. |
| 동적 | 부동 소수점으로 표시할 자릿수를 설정합니다. |
| 동적 | 서브 쿼리가 축소되지 않는 FROM 목록 크기를 설정합니다. |
| 동적 | 업데이트를 디스크와 강제로 동기화합니다. |
| 동적 | 체크포인트 후 최초 변경 시 전체 페이지를 WAL에 기입합니다. |
| 동적 | 유전적 쿼리 최적화를 활성화합니다. |
| 동적 | GEQO: 다른 GEQO 파라미터의 기본값을 설정하는 데 사용됩니다. |
| 동적 | GEQO: 알고리즘의 반복 횟수입니다. |
| 동적 | GEQO: 모집단의 개체 수입니다. |
| 동적 | GEQO: 무작위 경로 선택을 위한 시드(seed)를 지정합니다. |
| 동적 | GEQO: 모집단 내 선택적 압력을 지정합니다. |
| 동적 | GEQO가 사용되는 FROM 항목의 임계값을 설정합니다. |
| 동적 | 정확한 GIN 기준 검색에 허용되는 최대 결과 수를 설정합니다. |
| 동적 | 핫 스탠바이가 피드백 메시지를 기본 또는 업스트림 스탠바이로 전송하는지 여부를 결정합니다. |
| 동적 | 간격 값에 대한 표시 형식을 설정합니다. |
| 동적 | JOIN 구문이 결합되지 않는 FROM 목록 크기를 설정합니다. |
| 동적 | 메시지 표시 언어를 설정합니다. |
| 동적 | 통화 금액의 형식으로 사용할 로캘을 설정합니다. |
| 동적 | 숫자의 형식으로 사용할 로캘을 설정합니다. |
| 동적 | 날짜와 시간 값의 형식으로 사용할 로캘을 설정합니다. |
| 동적 | autovacuum 작업이 기록되는 최소 실행 시간을 설정합니다. |
| 동적 | 각 체크포인트를 기록합니다. |
| 동적 | 성공한 연결을 모두 기록합니다. |
| 동적 | 지속 시간을 포함해 세션 종료를 기록합니다. |
| 동적 | 완료된 개별 SQL 문의 지속 시간을 기록합니다. |
| 동적 | 기록된 메시지의 세부 사항을 설정합니다. |
| 동적 | 실행기 성능 통계를 서버 로그에 기록합니다. |
| 동적 | 로그 파일의 이름 패턴을 설정합니다. |
| 동적 | 연결 로그에 호스트 이름을 기록합니다. |
| 동적 | 오랜 잠금 대기 시간을 기록합니다. |
| 동적 | 문이 기록되는 최소 실행 시간을 설정합니다. |
| 동적 | 이 수준 이상으로 오류 원인이 되는 모든 문을 기록합니다. |
| 동적 | 기록되는 메시지 수준을 설정합니다. |
| 동적 | 구문 분석기 성능 통계를 서버 로그에 기록합니다. |
| 동적 | planner 성능 통계를 서버 로그에 기록합니다. |
| 동적 | N분 후에 자동 로그 파일 로테이션이 일어납니다. |
| 동적 | N킬로바이트 후에 자동 로그 파일 로테이션이 일어납니다. |
| 동적 | 기록할 문 유형을 설정합니다. |
| 동적 | 누적 성능 통계를 서버 로그에 기록합니다. |
| 동적 | 이 킬로바이트 수치보다 큰 임시 파일의 사용을 기록합니다. |
| 동적 | 유지 관리 작업에 사용할 최대 메모리를 설정합니다. |
| 동적 | 최대 스택 깊이(KB)를 설정합니다. |
| 동적 | 핫 스탠바이 서버가 아카이브 WAL 데이터를 처리할 때 쿼리 취소까지 걸리는 최대 지연 시간을 설정합니다. |
| 동적 | 핫 스탠바이 서버가 스트리밍 WAL 데이터를 처리할 때 쿼리 취소까지 걸리는 최대 지연 시간을 설정합니다. |
| 동적 | SQL 조각 생성 시 모든 식별자에 인용 부호(")를 추가합니다. |
| 동적 | 비순차적으로 가져온 디스크 페이지에 대한 planner의 예상 코스트를 설정합니다. |
| 동적 | Amazon RDS가 N분 이상 지난 PostgreSQL 로그를 삭제합니다. |
| 동적 | 스키마로 한정되지 않은 이름의 스키마 검색 순서를 설정합니다. |
| 동적 | 순차적으로 가져온 디스크 페이지에 대한 planner의 예상 코스트를 설정합니다. |
| 동적 | 트리거 및 다시 쓰기 규칙에 대한 세션 동작을 설정합니다. |
| 동적 | 다양한 명령에서 서브테이블이 기본적으로 상속됩니다. |
| 동적 | 암호화 키를 재협상하기 전에 전송 및 수신할 트래픽 양을 설정합니다. |
| 동적 | ... 문자열에서 백슬래시가 리터럴로 처리됩니다. |
| 동적 | 모든 문에 허용되는 최대 지속 시간을 설정합니다. |
| 동적 | 동기 방식의 순차적 스캔을 활성화합니다. |
| 동적 | 현재 트랜잭션 동기화 수준을 설정합니다. |
| 동적 | TCP keepalive의 최대 재전송 횟수를 지정합니다. |
| 동적 | TCP keepalive의 실행 주기를 지정합니다. |
| 동적 | TCP keepalive의 재전송 주기를 지정합니다. |
| 동적 | 각 세션에서 사용하는 임시 버퍼의 최대 수를 설정합니다. |
| 동적 | 임시 테이블 및 정렬 파일에 사용할 테이블스페이스를 설정합니다. |
| 동적 | 타임스탬프를 표시 및 해석할 시간대를 설정합니다. |
| 동적 | 명령 실행에 대한 정보를 수집합니다. |
| 동적 | 데이터베이스 작업에 관한 통계를 수집합니다. |
| 동적 | 데이터베이스 작업에 관한 함수 수준 통계를 수집합니다. |
| 동적 | 데이터베이스 I/O 작업에 관한 시간 통계를 수집합니다. |
| 동적 | 잠재적 직렬화 오류 없이 실행될 때까지 직렬화가 가능한 읽기 전용 트랜잭션의 지연 여부를 결정합니다. |
| 동적 | 현재 트랜잭션 격리 수준을 설정합니다. |
| 동적 | 현재 트랜잭션의 읽기 전용 상태를 설정합니다. |
| 동적 | expr=NULL을 expr IS NULL로 처리합니다. |
| 동적 | 프로세스 제목을 업데이트하여 활성 SQL 명령을 표시합니다. |
| 동적 | vacuum 코스트 지연 시간(밀리초)을 지정합니다. |
| 동적 | 지연 시간 이전에 이용 가능한 vacuum 코스트 값을 지정합니다. |
| 동적 | vacuum으로 페이지 변경 시 부과되는 vacuum 코스트를 지정합니다. |
| 동적 | 버퍼 캐시에서 발견되는 페이지에 대한 vacuum 코스트를 지정합니다. |
| 동적 | 버퍼 캐시에서 발견되지 않는 페이지에 대한 vacuum 코스트를 지정합니다. |
| 동적 | vacuum 및 hot cleanup을 연기해야 하는 트랜잭션 수를 지정합니다(있는 경우). |
| 동적 | vacuum에서 테이블 행을 동결해야 하는 최소 기간을 지정합니다. |
| 동적 | vacuum에서 전체 테이블을 스캔하여 튜플을 동결해야 하는 기간을 지정합니다. |
| 동적 | WAL 플러시 사이에 WAL 작성기의 절전 시간을 지정합니다. |
| 동적 | 쿼리 작업 공간에 사용할 최대 메모리를 설정합니다. |
| 동적 | XML에서 바이너리 값의 인코딩 방식을 설정합니다. |
| 동적 | 암시적 구문 분석 및 직렬화 작업에서 XML 데이터를 문서 또는 내용 조각으로 간주할지 여부를 설정합니다. |
| 정적 | 트랜잭션 ID 랩어라운드를 방지하기 위한 테이블의 autovacuum 기간을 지정합니다. |
| 정적 | autovacuum 작업자 프로세스를 동시에 실행할 수 있는 최대 수를 설정합니다. |
| 정적 | 동시에 접속할 수 있는 최대 수를 설정합니다. |
| 정적 | 서버 프로세스마다 파일을 동시에 열 수 있는 최대 수를 설정합니다. |
| 정적 | 하나의 트랜잭션에서 사용할 수 있는 최대 잠금 횟수를 설정합니다. |
| 정적 | 하나의 트랜잭션에서 사용할 수 있는 최대 술어(predicate) 잠금 횟수를 설정합니다. |
| 정적 | 트랜잭션을 동시에 준비할 수 있는 최대 수를 설정합니다. |
| 정적 | 서버에서 사용할 공유 메모리 버퍼의 수를 설정합니다. |
| 정적 | SSL 연결을 활성화합니다. |
| 정적 | pg_stat_activity.current_query에 예약되는 크기(바이트)를 설정합니다. |
| 정적 | WAL 기능을 위해 공유 메모리에서 사용할 디스크 페이지 버퍼 수를 설정합니다. |
3. 테이블의 Vacuum 해야 하는지 여부를 결정
PostgreSQL에서는 "처리 중" 상태인 vacuum 되지 않은 트랜잭션 20억 개가 있을 수 있다. vacuum되지 않은 트랜잭션 수가 20억개에 도달하면 로그에서 vacuum 작업을 수행해야 한다는 경고를 표시하기 시작한다. vacuum 되지 않ㅇ츤 트랜잭션 수가 20억개에 도달하면 PostgreSQL은 데이터베이스를 읽기 전용으로 설정하며 오프라인 상태로 설정된다.
아래 쿼리는 vacuum 되지 않은 트랜잭션 수를 표시한다.
select datname, age(datfrozenxid) from pg_database order by age(datfrozenxid) desc limit 20;
트랜잭션 수를 20억 미만으로 유지하도록 설정한다.
'Tech > Database' 카테고리의 다른 글
누적 데이터 query (0) | 2018.07.11 |
---|---|
주식 데이터 이평선 쿼리 구현 (2) | 2018.07.10 |
PostgreSQL - Record to column (0) | 2018.07.08 |
PostgreSQL - Window function (0) | 2018.07.06 |
PostgreSQL - 날짜계산 (0) | 2018.07.06 |
댓글