Evitar la envoltura del ID de transacción

El recomendador de uso elevado de IDs de transacción de Cloud SQL genera de forma proactiva recomendaciones que te ayudan a evitar que se repitan los IDs de transacción en las instancias de Cloud SQL para PostgreSQL. El recomendador de uso elevado de IDs de transacción de Cloud SQL solo se admite en instancias de la edición Enterprise Plus de Cloud SQL.

Puedes aplicar esta recomendación cuando una instancia de Cloud SQL se acerque a un problema de envolvente de ID de transacción. En esta página se describe cómo funciona la recomendación de alta utilización de IDs de transacción de Cloud SQL y cómo puede usarla.

Cómo funciona

Se asigna un ID de transacción cuando empieza la transacción y se congela hasta que se limpia. La utilización del ID de transacción es el número de transacciones sin limpiar (asignadas menos las congeladas) expresado como una fracción del valor máximo de 2000 millones. Con la configuración predeterminada de PostgreSQL, si los procesos de vacío se ejecutan de forma óptima y sin interrupciones, la mayoría de las bases de datos experimentan un uso del ID de transacción de aproximadamente el 10%. En las bases de datos con mucha actividad, se pueden observar niveles de utilización del ID de transacción más altos, ya que las cargas de trabajo habituales suelen tener prioridad sobre el proceso de limpieza. Si la utilización del ID de transacción tiende a valores muy altos (80% o más), la base de datos podría correr el riesgo de agotar los IDs de transacción. Cuando el uso del ID de transacción alcanza el 100 %, se denomina "envoltura del ID de transacción". Cuando el porcentaje de utilización del ID de transacción alcanza el 100%, PostgreSQL deja de aceptar consultas de escritura.

El recomendador de alta utilización de IDs de transacción de Cloud SQL analiza la utilización de IDs de transacción en una instancia de Cloud SQL para PostgreSQL.

Si el porcentaje de utilización del ID de transacción es igual o superior al 80%, le recomendamos que tome medidas para evitar que se repitan los IDs de transacción.

Precios

El recomendador de uso elevado de IDs de transacción de Cloud SQL está incluido en el nivel de precios Estándar de Recomendaciones.

Antes de empezar

Para poder ver recomendaciones y estadísticas, haz lo siguiente:

  • Para obtener los permisos necesarios para ver y usar las estadísticas y las recomendaciones, asegúrate de que tienes los roles necesarios.
    Tasks Roles
    Ver recomendaciones Uno de estos roles: recommender.cloudsqlViewer o cloudsql.viewer.
    Aplicar recomendaciones Uno de estos roles: recommender.cloudsqlAdmin, cloudsql.editor o cloudsql.admin.
    Para obtener más información sobre los roles, consulta los artículos sobre descripción de roles y concesión de permisos de gestión de identidades y accesos.
  • Enable the Recommender API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

Mostrar recomendaciones para mejorar el rendimiento de las instancias

Puedes consultar las recomendaciones para mejorar el rendimiento de las instancias mediante la Google Cloud consolagcloud CLI, gcloud CLI o la API Recommender.

Las recomendaciones para mejorar el rendimiento de las instancias solo se muestran si tienes instancias que se acercan a un envolvente de ID de transacción.

Consola

Para ver recomendaciones sobre el rendimiento de las instancias mediante la consola deGoogle Cloud , sigue estos pasos:

  1. Ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. En el banner de recomendaciones para evitar que se repitan los IDs de transacción, haga clic en Ver todo.

También puedes seguir estos pasos:

  1. Ve al centro de recomendaciones. Consulta también el artículo Primeros pasos con el centro de recomendaciones.

    Ir al centro de recomendaciones

  2. En la tarjeta Mejorar el rendimiento de la instancia de Cloud SQL, haz clic en Ver todo.

  3. Selecciona las instancias con la recomendación Evitar que se repita el ID de transacción.

CLI de gcloud

Para enumerar las recomendaciones de mejora del rendimiento de las instancias mediante gcloud CLI, ejecuta el comando gcloud recommender recommendations list de la siguiente manera:

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

Haz los cambios siguientes:

  • PROJECT_ID: tu ID de proyecto
  • LOCATION: una región, como us-central1

API

Para mostrar las recomendaciones de mejora del rendimiento de las instancias mediante la API Recommendations, llama al método recommendations.list de la siguiente manera:

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

Haz los cambios siguientes:

  • PROJECT_ID: tu ID de proyecto.
  • LOCATION: una región, como us-central1.

Si el recomendador detecta instancias con un uso elevado del ID de transacción, las muestra en una tabla junto con otras recomendaciones de rendimiento. En cada fila se muestra el ID de la instancia, una breve recomendación, el motor de la base de datos, la ubicación y la fecha de la última actualización.

Ver estadísticas y recomendaciones detalladas

Puedes ver estadísticas y recomendaciones detalladas sobre las instancias que se acercan a un envoltorio de ID de transacción mediante la Google Cloud consolagcloud CLI o la API Recommender.

Consola

Para ver estadísticas y recomendaciones detalladas sobre las instancias que están cerca del umbral de rendimiento mediante la consola Google Cloud , haga clic en el enlace de la recomendación en la lista de instancias.

CLI de gcloud

Para ver estadísticas y recomendaciones detalladas sobre las instancias que se acercan al umbral de rendimiento mediante gcloud CLI, ejecuta el comando gcloud recommender insights list de la siguiente manera:

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

Haz los cambios siguientes:

  • PROJECT_ID: tu ID de proyecto.
  • LOCATION: una región, como us-central1.

API

Para ver estadísticas y recomendaciones detalladas sobre las instancias que están cerca del umbral de rendimiento mediante la API Recommendations, llama al método insights.list de la siguiente manera:

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

Haz los cambios siguientes:

  • PROJECT_ID: tu ID de proyecto.
  • LOCATION: una región, como us-central1.

En la siguiente tabla se indican las estadísticas y las recomendaciones que genera el recomendador de alta utilización de IDs de transacción de Cloud SQL. Los subtipos se pueden ver en los resultados de gcloud CLI y de la API.

Insight Recomendación
El porcentaje de uso del ID de transacción en esta instancia es alto y está cerca del 100%.
Subtype: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION
Evita que los IDs de transacción se repitan en las instancias de Cloud SQL.
Subtype: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE

Aplicar recomendaciones

Evalúa las recomendaciones detenidamente y haz lo siguiente:

Optimizar el rendimiento de una instancia

Para solucionar el problema de envolvente del ID de transacción con la instancia, haga lo siguiente:

  1. Busca la base de datos y la tabla que provocan el ajuste de texto.

  2. Consulta e interpreta las métricas de utilización del ID de transacción en tus instancias de base de datos.

  3. Comprueba si hay algún ID de transacción bloqueado.

  4. Quita los bloqueadores de VACUUM.

  5. Comprueba y acelera la velocidad de VACUUM.

Para obtener más información, consulta la entrada de blog Using VACUUM to accelerate transaction ID freezing in Cloud SQL for PostgreSQL (Usar VACUUM para acelerar la inmovilización de IDs de transacción en Cloud SQL para PostgreSQL).

Evitar la envoltura del ID de transacción

Para evitar que se repitan los IDs de transacción de una instancia, ejecuta el siguiente comando:

SELECT * FROM google_vacuum_mgmt.pg_fix_wraparound();

Ejemplo:

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%

Siguientes pasos