Cloud SQL の高トランザクション ID 使用率 Recommender は、Cloud SQL for PostgreSQL インスタンスでトランザクション ID ラップアラウンドを回避するための推奨事項をプロアクティブに生成します。Cloud SQL の高トランザクション ID 使用率 Recommender は、Cloud SQL Enterprise Plus エディションのインスタンスでのみサポートされています。
Cloud SQL インスタンスがトランザクション ID ラップアラウンドの問題に近づいている場合に、この推奨事項を適用できます。このページでは、Cloud SQL の高トランザクション ID 使用率 Recommender の仕組みと使用方法について説明します。
仕組み
トランザクション ID は、トランザクションの開始時に割り当てられ、バキュームされるまで凍結されます。トランザクション ID 使用率は、最大トランザクション数(20 億)に対する、バキュームされていないトランザクション数(「割り当て数」から「凍結数」を引いたもの)の割合です。デフォルトの PostgreSQL 設定では、バキューム処理が最適に、かつ中断することなく実行された場合、リージョンのトランザクション ID 使用率は 10% 前後になるのが一般的です。バキュームよりも定期的なワークロードが優先されることが多い高負荷のデータベースでは、トランザクション ID の使用率が高くなることがあります。トランザクション ID の使用率が非常に高い値(80% 以上)になる傾向がある場合、データベースでトランザクション ID が枯渇する可能性があります。トランザクション ID の使用率が 100% に達することを、トランザクション ID ラップアラウンドと呼びます。トランザクション ID の使用率が 100% に達すると、PostgreSQL では書き込みクエリの受け入れが停止されます。
Cloud SQL の高トランザクション ID 使用率 Recommender は、Cloud SQL for PostgreSQL インスタンスのトランザクション ID 使用率を分析します。
トランザクション ID 使用率が 80% 以上の場合は、トランザクション ID ラップアラウンドを回避するための措置を取ることが推奨されます。
料金
Cloud SQL の高トランザクション ID 使用率 Recommender は、標準の Recommender の料金ティアに含まれています。
始める前に
推奨事項と分析情報を表示するには、事前に次の手順を行う必要があります。
- 分析情報と推奨事項を表示、操作する権限を取得するには、必要なロールが必要です。
タスク ロール 推奨事項を表示する recommender.cloudsqlViewer
またはcloudsql.viewer
のいずれかのロール。推奨事項を適用する recommender.cloudsqlAdmin
、cloudsql.editor
、cloudsql.admin
のいずれかのロール。 -
Enable the Recommender API.
インスタンスのパフォーマンス改善の推奨事項を一覧表示する
インスタンスのパフォーマンス改善に関する推奨事項を一覧表示するには、 Google Cloud コンソール、gcloud CLI
、または Recommender API を使用します。
インスタンスのパフォーマンス改善に関する推奨事項は、トランザクション ID ラップアラウンドに近づいているインスタンスがある場合にのみ表示されます。
コンソール
Google Cloud コンソールを使用してインスタンスのパフォーマンスに関する推奨事項を一覧表示する手順は次のとおりです。
Cloud SQL の [インスタンス] ページに移動します。
[トランザクション ID ラップアラウンドの防止] の推奨事項バナーで [すべて表示] をクリックします。
または、次の方法を行います。
[おすすめハブ] に移動します。おすすめハブのスタートガイドもご覧ください。
[Cloud SQL インスタンスのパフォーマンスの改善] カードで、[すべて表示] をクリックします。
[トランザクション 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
などのリージョン。
Recommender は、トランザクション ID 使用率が高いインスタンスを検出すると、それを他のパフォーマンス推奨事項とともにテーブルに一覧表示します。各行には、インスタンス ID、簡単な推奨事項、データベース エンジン、ロケーション、最終更新日が表示されます。
分析情報と詳細な推奨事項を表示する
トランザクション ID ラップアラウンドに近づく傾向のあるインスタンスに関する分析情報と詳細な推奨事項を表示するには、 Google Cloud コンソール、gcloud CLI
、または Recommender API を使用します。
コンソール
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 使用率 Recommender が生成する分析情報と推奨事項を示します。サブタイプは、gcloud CLI
と API の結果に表示されます。
分析情報 | 推奨事項 |
---|---|
このインスタンスのトランザクション ID の使用率は高く、100% に近い状態です。 サブタイプ: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION |
Cloud SQL インスタンスでのトランザクション ID ラップアラウンドを回避してください。 サブタイプ: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE |
推奨事項を適用する
推奨事項を慎重に評価し、以下のいずれかを行います。
推奨事項を調べるには、[インスタンスを表示] をクリックします。インスタンスのパフォーマンスを最適化するまたはトランザクション ID のラップアラウンドを防ぐを確認して、推奨事項に従います。
推奨事項を閉じて強調を解除し、グレー表示するには、[閉じる] をクリックします。
推奨事項を適用または拒否せずにパネルを閉じるには、[キャンセル] をクリックします。
インスタンスのパフォーマンスを最適化する
インスタンスのトランザクション ID ラップアラウンドの問題を解決するには、次の操作を行います。
詳細については、ブログ投稿 Cloud SQL for PostgreSQL における VACUUM を使用したトランザクション ID の凍結の高速化もご覧ください。
トランザクション ID のラップアラウンドを防ぐ
インスタンスのトランザクション ID ラップアラウンドを防ぐには、次のコマンドを実行します。
SELECT * FROM google_vacuum_mgmt.pg_fix_wraparound();
出力例:
postgres=> select * from google_vacuum_mgmt.pg_fix_wraparound(); -[ RECORD 1 ]-----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- issue_description | Cloud SQL for PostgreSQL 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%
次のステップ
- ディスクの可用性をモニタリングする
- アイドル状態の Cloud SQL インスタンスを特定する
- オーバープロビジョニングされた Cloud SQL インスタンスを削減する
- Google Cloud Recommender の詳細を見る