트랜잭션 ID 랩어라운드 방지

Cloud SQL 높은 트랜잭션 ID 사용률 추천자는 Cloud SQL PostgreSQL 인스턴스의 잠재적인 트랜잭션 ID 랩어라운드를 방지하는 데 도움이 되는 권장사항을 사전에 생성합니다.

Cloud SQL 인스턴스가 트랜잭션 ID 랩어라운드 문제를 일으키는 경향이 있는 경우 이 권장사항을 적용할 수 있습니다. 이 페이지에서는 Cloud SQL 높은 트랜잭션 ID 사용률 추천자 작동 방식과 사용 방법을 설명합니다.

작동 방식

트랜잭션 ID는 트랜잭션이 시작될 때 할당되며 트랜잭션이 제거될 때까지 고정됩니다. 트랜잭션 ID 사용률은 최대 20억의 일부로 표현되는 제거되지 않은 트랜잭션(할당 - 고정) 수입니다. 기본 PostgreSQL 설정에서 베큠(vacuum) 프로세스가 중단 없이 최적의 상태로 수행되면 대부분의 데이터베이스가 리전에서 약 10%의 트랜잭션 ID 사용률을 경험합니다. 일반 워크로드가 종종 베큠보다 우선 적용되는 사용 중인 데이터베이스에서 높은 트랜잭션 ID 사용률 수준을 확인할 수 있습니다. 트랜잭션 ID 사용률이 매우 높은 값(80% 이상)으로 나타나는 경우 데이터베이스에서 트랜잭션 ID가 소진될 위험이 있습니다. 트랜잭션 ID 사용률이 100%에 도달하는 것을 트랜잭션 ID 랩어라운드라고 합니다. 트랜잭션 ID 사용률이 100%에 도달하면 PostgreSQL은 쓰기 쿼리를 허용하지 않습니다.

Cloud SQL 높은 트랜잭션 ID 사용률 추천자는 Cloud SQL PostgreSQL 인스턴스에서 트랜잭션 ID 사용률을 분석합니다.

트랜잭션 ID 사용률이 80% 이상인 경우 트랜잭션 ID 랩어라운드를 방지하기 위한 조치를 취하는 것이 좋습니다.

가격 책정

Cloud SQL 높은 트랜잭션 ID 사용 추천자는 표준 추천자 가격 책정 계층에 있습니다.

시작하기 전에

권장사항과 통계를 보려면 먼저 다음을 수행하세요.

  • 통계 및 권장사항을 보고 사용할 수 있는 권한을 얻으려면 필요한 역할이 있어야 합니다.
    태스크 역할
    권장사항 보기 다음 역할 중 하나: recommender.cloudsqlViewer 또는 cloudsql.viewer
    권장사항 적용 다음 역할 중 하나: recommender.cloudsqlAdmin, cloudsql.editor 또는 cloudsql.admin
    역할에 대한 상세 내용은 역할 이해IAM 권한 부여를 참조하세요.
  • Recommender API 사용 설정

    API 사용 설정

인스턴스 성능 개선 권장사항 나열

Google Cloud 콘솔, gcloud CLI 또는 Recommender API를 사용하여 인스턴스 성능 개선 권장사항을 나열할 수 있습니다.

인스턴스 성능 향상 권장사항은 트랜잭션 ID 랩어라운드에 가까운 인스턴스가 있는 경우에만 표시됩니다.

콘솔

Google Cloud 콘솔을 사용하여 인스턴스 성능에 대한 권장사항을 나열하려면 다음 단계를 따르세요.

  1. Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. 트랜잭션 ID 랩어라운드 권장사항 배너에서 모두 보기를 클릭합니다.

또는 다음 단계를 수행하세요.

  1. 권장사항 허브로 이동합니다. 권장사항 허브 시작하기도 참조하세요.

    권장사항 허브로 이동

  2. Cloud SQL 인스턴스 성능 향상 카드에서 모두 보기를 클릭합니다.

  3. 트랜잭션 ID 랩어라운드 방지 권장사항으로 인스턴스를 선택합니다.

gcloud CLI

gcloud CLI를 사용하여 인스턴스 성능 개선 권장사항을 나열하려면 다음과 같이 gcloud recommender recommendations list 명령어를 실행합니다.

gcloud recommender recommendations list \
--project=PROJECT_ID \
--location=LOCATION \
--recommender=google.cloudsql.instance.PerformanceRecommender \
--filter=recommenderSubtype=POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • LOCATION: 리전(예: us-central1)

API

Recommendations API를 사용하여 인스턴스 성능 개선 권장사항을 나열하려면 다음과 같이 recommendations.list 메서드를 호출합니다.

GET https://recommender.googleapis.com/v1beta1/projects/PROJECT-ID/locations/LOCATION/recommenders/google.cloudsql.instance.PerformanceRecommender.PostgresHighTransactionIdUtilizationBestPractice/recommendations

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • LOCATION: 리전(예: us-central1)

추천자는 트랜잭션 ID 사용률이 높은 인스턴스를 감지하면 이를 다른 성능 권장사항과 함께 테이블에 나열합니다. 각 행에는 인스턴스 ID, 간단한 권장사항, 데이터베이스 엔진, 위치, 마지막 새로고침 날짜가 표시됩니다.

통계 및 자세한 권장사항 보기

Google Cloud 콘솔, gcloud CLI 또는 Recommender API를 사용하여 트랜잭션 ID 랩어라운드에 가까운 인스턴스에 대한 유용한 정보 및 자세한 권장사항을 확인할 수 있습니다.

콘솔

Google Cloud 콘솔을 사용하여 성능 기준점에 근접한 인스턴스에 대한 통계와 자세한 권장사항을 보려면 인스턴스 목록에서 권장사항 링크를 클릭합니다.

gcloud CLI

gcloud CLI를 사용하여 성능 기준점에 근접한 인스턴스에 대한 통계와 자세한 권장사항을 보려면 다음과 같이 gcloud recommender insights list 명령어를 실행합니다.

gcloud recommender insights list \
--project=PROJECT_ID \
--location=LOCATION \
--insight-type=google.cloudsql.instance.PerformanceInsight \
--filter=insightSubtype=POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • LOCATION: 리전(예: us-central1)

API

Recommendations API를 사용하여 성능 임곗값에 가까운 인스턴스에 대한 유용한 정보 및 자세한 권장사항을 보려면 다음과 같이 insights.list 메서드를 호출합니다.

GET https://recommender.googleapis.com/v1beta1/projects/PROJECT-ID/locations/LOCATION/insightTypes/google.cloudsql.instance.PerformanceRecommender.PostgresHighTransactionIdUtilization/insights

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • LOCATION: 리전(예: us-central1)

다음 표에는 Cloud SQL 높은 트랜잭션 ID 사용률 추천자가 생성하는 통계와 권장사항이 나와 있습니다. 하위 유형은 gcloud CLI 및 API 결과에 표시됩니다.

통계 권장사항
이 인스턴스의 트랜잭션 ID 사용률이 높고 100%에 근접합니다.
하위 유형: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION
Cloud SQL 인스턴스의 잠재적인 트랜잭션 ID 랩어라운드를 방지합니다.
하위 유형: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE

권장사항 적용

통계 및 권장사항을 신중하게 평가하고 다음을 수행합니다.

  • 권장사항을 검토하려면 인스턴스 보기를 클릭하세요. 인스턴스 성능 최적화 또는 트랜잭션 ID 랩어라운드 방지를 참조하여 권장사항을 따르세요.

  • 강조 표시가 해제되고 흐리게 표시될 수 있도록 권장사항을 없애려면 닫기를 클릭합니다.

  • 권장사항을 적용하거나 해제하지 않고 패널을 닫으려면 취소를 클릭합니다.

인스턴스 성능 최적화

인스턴스의 트랜잭션 ID 랩어라운드 문제를 해결하려면 다음 안내를 따르세요.

  1. 랩어라운드를 유발하는 데이터베이스 및 테이블 찾기

  2. 데이터베이스 인스턴스의 트랜잭션 ID 사용률 측정항목 살펴보고 해석하기

  3. 중단된 트랜잭션 ID가 있는지 확인

  4. VACUUM 차단 요소 제거 방법

  5. VACUUM 속도 확인 및 가속화

자세한 내용은 VACUUM을 사용하여 PostgreSQL용 Cloud SQL에서 트랜잭션 ID 고정 가속화 블로그 게시물을 참조하세요.

트랜잭션 ID 랩어라운드 방지

인스턴스의 트랜잭션 ID 랩어라운드를 방지하려면 다음 명령어를 실행합니다.

SELECT * FROM google_vacuum_mgmt.pg_fix_wraparound();

출력 예시:

postgres=> select * from google_vacuum_mgmt.pg_fix_wraparound();
-[ RECORD 1 ]-----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
issue_description | Gemini has detected an open prepared transaction on your instance which is blocking vacuum. Monitor the transaction ID utilization and commit or rollback the transaction, as needed.
query             | ROLLBACK PREPARED 'trx_id_pin'; or COMMIT PREPARED 'trx_id_pin';
recommendation    | To commit a prepared transaction, you must be connected as the same user that originally executed the transaction: postgres
insights          | Transaction ID Utilization: 88.49%

다음 단계