Empêcher la réinitialisation de l'ID de transaction

L'outil de recommandation pour utilisation élevée d'ID de transaction Cloud SQL génère de manière proactive des recommandations qui vous aident à éviter la réinitialisation des ID de transaction pour les instances PostgreSQL Cloud SQL.

Vous pouvez appliquer cette recommandation lorsqu'une instance Cloud SQL tend vers un problème de réinitialisation d'ID de transaction. Cette page décrit le fonctionnement de l'outil de recommandation pour utilisation élevée d'ID de transaction, ainsi que son utilisation.

Fonctionnement

Un ID de transaction est attribué au démarrage de la transaction et bloqué jusqu'à ce que la transaction soit vide. L'utilisation de l'ID de transaction correspond au nombre de transactions non vidées (attribuées moins figées) exprimé par le biais d'une fraction de la valeur maximale de deux milliards. Avec les paramètres PostgreSQL par défaut, où les processus de vide fonctionnent de manière optimale et sans interruption, la plupart des bases de données connaissent un taux d'utilisation des ID de transaction d'environ 10 %. Des niveaux plus élevés d'utilisation des ID de transaction peuvent être observés dans les bases de données occupées où les charges de travail standards sont fréquemment prioritaires sur l'opération VACUUM. Si l'utilisation des ID de transaction s'approche de valeurs très élevées (80 % ou plus), la base de données peut présenter un risque d'épuisement des ID de transaction. L'utilisation de l'ID de transaction atteignant 100 % est appelée "réinitialisation de l'ID de transaction". Une fois que le pourcentage d'utilisation de l'ID de transaction atteint 100 %, PostgreSQL cesse d'accepter les requêtes d'écriture.

L'outil de recommandation d'utilisation élevée d'ID de transaction Cloud SQL analyse l'utilisation d'ID de transaction sur une instance PostgreSQL Cloud SQL.

Si le pourcentage d'utilisation de l'ID de transaction est supérieur ou égal à 80 %, il est recommandé d'éviter ce phénomène.

Tarifs

L'outil de recommandation d'utilisation élevée de l'ID de transaction Cloud SQL se trouve dans le niveau de tarification standard de l'outil de recommandation.

Avant de commencer

Afin de pouvoir afficher les recommandations et les insights, procédez comme suit :

  • Pour obtenir les autorisations permettant d'afficher et d'utiliser les insights et les recommandations, assurez-vous de disposer des rôles requis.
    Tâches Rôles
    Afficher les recommandations L'un des rôles suivants : recommender.cloudsqlViewer ou cloudsql.viewer.
    Appliquer les recommandations L'un des rôles suivants : recommender.cloudsqlAdmin, cloudsql.editor ou cloudsql.admin.
    Pour plus d'informations sur les rôles, consultez les pages Comprendre les rôles et Accorder des autorisations IAM.
  • Enable the Recommender API.

    Enable the API

Répertorier les recommandations d'amélioration des performances des instances

Vous pouvez répertorier les recommandations d'amélioration des performances d'instance à l'aide de la console Google Cloud, de gcloud CLI ou de l'API Recommender.

Les recommandations d'amélioration des performances ne s'affichent que si des instances sont sur le point de réinitialiser un ID de transaction.

Console

Pour répertorier les recommandations relatives aux performances des instances en utilisant la console Google Cloud, procédez comme suit :

  1. Accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur Tout afficher sur la bannière de recommandations "Empêcher l'encapsulation des ID de transaction".

Vous pouvez également procéder comme suit :

  1. Accédez au centre de recommandations. Consultez également la section Premiers pas avec le centre de recommandations.

    Accéder au hub de recommandations

  2. Dans la fiche Améliorer les performances des instances Cloud SQL, cliquez sur Tout afficher.

  3. Sélectionnez les instances avec la recommandation Empêcher la réinitialisation de l'ID de transaction.

CLI gcloud

Pour répertorier les recommandations d'amélioration des performances des instances à l'aide de gcloud CLI, exécutez la commande gcloud recommender recommendations list comme suit :

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet
  • LOCATION : une région, telle que us-central1

API

Pour répertorier les recommandations d'amélioration des performances des instances à l'aide de l'API Recommendations, appelez la méthode recommendations.list comme suit :

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet
  • LOCATION : une région, telle que us-central1

Si l'outil de recommandation détecte des instances avec une utilisation élevée d'ID de transaction, il les répertorie dans un tableau avec d'autres recommandations de performances. Chaque ligne indique l'ID d'instance, une brève recommandation, le moteur de la base de données, l'emplacement et la date de la dernière actualisation.

Afficher les insights et les recommandations détaillées

Vous pouvez afficher des insights et des recommandations détaillées sur les instances qui tendent vers une réinitialisation d'ID de transaction en utilisant la console Google Cloud, gcloud CLI ou l'API Recommender.

Console

Pour afficher des insights et des recommandations détaillées sur les instances proches du seuil de performances à l'aide de la console Google Cloud, cliquez sur le lien de recommandation dans la liste des instances.

CLI gcloud

Pour afficher des insights et des recommandations détaillées sur des instances proches du seuil de performances à l'aide de gcloud CLI, exécutez la commande gcloud recommender insights list comme suit :

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet
  • LOCATION : une région, telle que us-central1

API

Pour afficher des insights et des recommandations détaillées sur des instances proches du seuil de performances à l'aide de l'API Recommendations, appelez la méthode insights.list comme suit :

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet
  • LOCATION : une région, telle que us-central1

Le tableau suivant répertorie les insights et les recommandations générés par l'outil de recommandation Cloud SQL pour utilisation élevée des ID de transactions. Les sous-types sont visibles dans les résultats de gcloud CLI et de l'API.

Insight Recommandation
Le pourcentage d'utilisation de l'ID de transaction sur cette instance est élevé et proche de 100 %.
Sous-type : POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION.
Éviter l'éventuelle réinitialisation de l'ID de transaction pour les instances Cloud SQL.
Sous-type : POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE.

Appliquer les recommandations

Étudiez attentivement les recommandations et effectuez l'une des opérations suivantes :

Optimiser les performances de votre instance

Pour résoudre le problème de réinitialisation de l'ID de transaction avec l'instance, procédez comme suit :

  1. Identifiez la base de données et la table à l'origine de la réinitialisation

  2. Explorez et interprétez les métriques d'utilisation des ID de transaction sur vos instances de base de données

  3. Recherchez un ID de transaction bloqué

  4. Supprimez les blocages de VACUUM

  5. Vérifiez et accélérez la vitesse VACUUM

Pour plus d'informations, consultez également l'article de blog Utiliser VACUUM pour accélérer le gel des ID de transaction dans Cloud SQL pour PostgreSQL.

Empêcher la réinitialisation de l'ID de transaction

Pour éviter la réinitialisation de l'ID de transaction pour une instance, exécutez la commande suivante :

SELECT * FROM google_vacuum_mgmt.pg_fix_wraparound();

Exemple de résultat :

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%

Étapes suivantes