RDS for PostgreSQL의 NOTICE 메시지 설명 - Amazon Relational Database Service

RDS for PostgreSQL의 NOTICE 메시지 설명

postgres_get_av_diag() 함수는 다음 NOTICE 메시지를 제공합니다.

연령이 모니터링 임곗값에 아직 도달하지 않은 경우

postgres_get_av_diag()가 블로커를 식별하기 위한 모니터링 임곗값은 기본적으로 5억 개의 트랜잭션입니다. postgres_get_av_diag()가 다음 NOTICE를 생성하면 트랜잭션 연령이 아직이 임곗값에 도달하지 않았음을 나타냅니다.

NOTICE: postgres_get_av_diag() checks for blockers that prevent aggressive vacuums only, it does so only after exceeding dvb_threshold which is 500,000,000 and age of this PostgreSQL cluster is currently at 2.
연령이 가장 많은 트랜잭션 ID를 가진 데이터베이스에 연결되지 않음

postgres_get_av_diag() 함수는 연령이 가장 많은 트랜잭션 ID를 가진 데이터베이스에 연결할 때 가장 정확한 출력을 제공합니다. postgres_get_av_diag()에서 보고한 연령이 가장 많은 트랜잭션 ID를 가진 데이터베이스는 사용자의 경우 'my_database'와 다릅니다. 올바른 데이터베이스에 연결되지 않은 경우 다 NOTICE가 생성됩니다.

NOTICE: You are not connected to the database with the age of oldest transaction ID. Connect to my_database database and run postgres_get_av_diag() for accurate reporting.

연령이 가장 많은 트랜잭션을 가진 데이터베이스에 연결하는 것은 다음과 같은 이유로 중요합니다.

  • 임시 테이블 블로커 식별: 임시 테이블의 메타데이터는 각 데이터베이스마다 다르기 때문에 일반적으로 테이블이 만들어진 데이터베이스에서 찾을 수 있습니다. 그러나 임시 테이블이 최상위 블로커이고 수명이 가장 많은 트랜잭션을 가진 데이터베이스에 있는 경우 이는 오해의 소지가 있을 수 있습니다. 올바른 데이터베이스에 연결하면 임시 테이블 블로커를 정확하게 식별할 수 있습니다.

  • 느린 vacuum 진단: 인덱스 메타데이터 및 테이블 수 정보는 데이터베이스별로 다르며 느린 vacuum 문제를 진단하는 데 필요합니다.

연령을 기준으로 가장 오래된 트랜잭션을 가진 데이터베이스가 rdsadmin 또는 template0 데이터베이스임

경우에 따라 rdsadmin 또는 template0 데이터베이스가 연령이 가장 많은 트랜잭션 ID를 가진 데이터베이스로 식별될 수 있습니다. 이 경우 postgres_get_av_diag()는 다음 NOTICE를 발행합니다.

NOTICE: The database with the age of oldest transaction ID is rdsadmin or template0, reach out to support if the reported blocker is in rdsadmin or template0.

나열된 블로커가 이 두 데이터베이스 중 하나에서 시작되지 않는지 확인합니다. rdsadmin 또는 template0에 블로커가 있는 것으로 보고되는 경우 이러한 데이터베이스는 사용자가 액세스할 수 없으며 개입이 필요하므로 지원팀에 문의하세요.

rdsadmin 또는 template0 데이터베이스가 최상위 블로커를 포함할 가능성은 매우 낮습니다.

공격적 vacuum이 이미 실행 중인 경우

postgres_get_av_diag() 함수는 공격적인 vacuum 프로세스가 실행 중일 때 보고하도록 설계되었지만, vacuum이 최소 1분 동안 활성 상태인 경우에만 이 출력을 트리거합니다. 이러한 의도적인 지연은 오탐지의 가능성을 줄이는 데 도움이 됩니다. 이 함수는 대기함으로써 효과적이고 중요한 vacuum만 보고되도록 하므로 vacuum 활동을 보다 정확하고 안정적으로 모니터링할 수 있습니다.

postgres_get_av_diag() 함수는 진행 중인 공격적인 vacuum이 하나 이상인 것을 감지하면 다음 NOTICE를 생성합니다.

NOTICE: Your database is currently running aggressive vacuum to prevent wraparound, monitor autovacuum performance.

NOTICE에 표시된 대로 vacuum의 성능을 계속 모니터링합니다. 공격적 vacuum에 대한 자세한 내용은 공격적 vacuum(랩어라운드 방지용) 실행 중 섹션을 참조하세요.

Autovacuum이 꺼져 있는 경우

데이터베이스 인스턴스에서 autovacuum이 비활성화된 경우 postgres_get_av_diag() 함수는 다음 NOTICE를 생성합니다.

NOTICE: Autovacuum is OFF, we strongly recommend to enable it, no restart is necessary.

자동 정리는 원활한 데이터베이스 작업을 보장하는 RDS for PostgreSQL DB 인스턴스의 중요한 기능입니다. 오래된 행 버전을 자동으로 제거하고, 스토리지 공간을 회수하고, 테이블 팽창을 방지하여 테이블과 인덱스를 효율적으로 유지함으로써 최적의 성능을 발휘하도록 합니다. 또한 Amazon RDS 인스턴스에서 트랜잭션을 중지할 수 있는 트랜잭션 ID 랩어라운드를 방지합니다. Autovacuum을 비활성화하면 데이터베이스 성능과 안정성이 장기적으로 저하될 수 있습니다. 항상 켜두는 것이 좋습니다. 자세한 내용은 Understanding autovacuum in RDS for PostgreSQL environments를 참조하세요.

참고

Autovacuum을 끄더라도 공격적인 vacuum이 중지되지 않습니다. 테이블이 autovacuum_freeze_max_age 임곗값에 도달하면 여전히 공격적 vacuum이 발생합니다.

남은 트랜잭션 수가 매우 적음

postgres_get_av_diag() 함수는 랩어라운드 vacuum이 임박하면 다음 NOTICE를 생성합니다. 이 NOTICE는 Amazon RDS 인스턴스가 잠재적으로 새 트랜잭션을 거부하기까지 1억 개의 트랜잭션이 남았을 때 발행됩니다.

WARNING: Number of transactions remaining is critically low, resolve issues with autovacuum or perform manual VACUUM FREEZE before your instance stops accepting transactions.

데이터베이스 가동 중지 시간을 방지하려면 즉각적인 조치가 필요합니다. Vacuum 작업을 면밀히 모니터링하고 영향을 받는 데이터베이스에서 VACUUM FREEZE를 수동으로 시작하여 트랜잭션 실패를 방지해야 합니다.