Evita el ajuste del ID de transacción

El recomendador de alta utilización de ID de transacción de Cloud SQL genera recomendaciones de forma proactiva que te ayudan a evitar un ajuste de ID de transacción posible para las instancias de PostgreSQL de Cloud SQL.

Puedes aplicar esta recomendación cuando una instancia de Cloud SQL tiende a solucionar un problema de unión de ID de transacción. En esta página se describe cómo funciona el recomendador de uso de ID de transacción alta de Cloud SQL y cómo puedes usarlo.

Cómo funciona

Se asigna un ID de transacción cuando se inicia la transacción, y se inmoviliza hasta que la transacción se limpia. El uso del ID de transacción es la cantidad de transacciones sin limpieza (asignadas menos inmovilizadas) que se expresa como una fracción del valor máximo de 2,000 millones. En la configuración predeterminada de PostgreSQL, con los procesos de vacío que se realizan de manera óptima y sin interrupciones, la mayoría de las bases de datos experimentan el uso del ID de transacción en la región de alrededor del 10%. Se pueden observar niveles de uso de ID de transacción más altos en las bases de datos ocupadas, en las que las cargas de trabajo normales suelen tener prioridad sobre el vacío. Si el uso del ID de transacción se acerca a valores muy altos (80% o más), la base de datos podría estar en riesgo de agotamiento del ID de transacción. El uso del ID de transacción que alcanza el 100% se determina como un ajuste de ID de transacción. Una vez que el porcentaje de uso del ID de transacción alcanza el 100%, PostgreSQL deja de aceptar consultas de escritura.

El recomendador de uso alto de ID de transacción de Cloud SQL analiza el uso del ID de transacción en una instancia de PostgreSQL de Cloud SQL.

Si el porcentaje de uso del ID de transacción es mayor o igual que el 80%, se recomienda realizar acciones para evitar el ajuste del ID de transacción.

Precios

El recomendador de uso alto de ID de transacción de Cloud SQL está en el Nivel de precios del recomendador Estándar.

Antes de comenzar

Antes de ver las recomendaciones y estadísticas, haz lo siguiente:

  • Si deseas obtener los permisos para ver estadísticas y recomendaciones y trabajar con ellas, asegúrate de tener los roles requeridos.
    Tareas Funciones
    Ver recomendaciones Uno de estos roles: recommender.cloudsqlViewer o cloudsql.viewer.
    Aplica recomendaciones Uno de estos roles: recommender.cloudsqlAdmin, cloudsql.editor o cloudsql.admin.
    Para obtener más información sobre los roles, consulta Información sobre las funciones y Otorga permisos de IAM.
  • Habilita la API de Recommender.

    Habilita la API

Enumera recomendaciones sobre el rendimiento de las instancias mejoradas

Puedes enumerar las recomendaciones de rendimiento de la instancia mejorada mediante la consola de Google Cloud, gcloud CLI o la API del recomendador.

Las recomendaciones de rendimiento de las instancias mejoradas solo se muestran si tienes instancias que se acercan al ajuste del ID de transacción.

Console

Para enumerar recomendaciones sobre el rendimiento de las instancias a través de la consola de Google Cloud, sigue estos pasos:

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

    Ir a Instancias de Cloud SQL

  2. Haz clic en Ver todo en el banner de recomendaciones Evita el ajuste del ID de transacción.

Alternativamente, sigue estos pasos:

  1. Ve al Centro de recomendaciones. Consulta también Empieza a usar el Centro de recomendaciones.

    Ir al Centro de recomendaciones

  2. En la tarjeta Mejora el rendimiento de las instancias de Cloud SQL, haz clic en Ver todo.

  3. Elige las instancias con la recomendación Evita el ajuste del ID de transacción.

CLI de gcloud

Para mostrar una lista de las recomendaciones de rendimiento de la instancia mejorada a través de 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

Reemplaza lo siguiente:

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

API

Para mostrar una lista de las recomendaciones de rendimiento de la instancia a través de la API de 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

Reemplaza lo siguiente:

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

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

Visualiza las estadísticas y las recomendaciones detalladas

Puedes ver estadísticas y recomendaciones detalladas sobre las instancias que tienden a unirse a un ID de transacción mediante la consola de Google Cloud, gcloud CLI o la API del recomendador.

Console

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

CLI de gcloud

Para ver estadísticas y recomendaciones detalladas sobre las instancias que están cerca del 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

Reemplaza lo siguiente:

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

API

Para ver estadísticas y recomendaciones detalladas sobre las instancias que están cerca de la amenaza de rendimiento mediante la API de recomendaciones, 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

Reemplaza lo siguiente:

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

En la siguiente tabla, se enumeran las estadísticas y recomendaciones que genera el recomendador de uso de ID de transacción alto de Cloud SQL. Los subtipos se pueden ver en los resultados de gcloud CLI y la API.

Estadística Recomendación
El porcentaje de uso del ID de transacción en esta instancia es alto y está cerca del 100%.
Subtipo: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION
Evita el posible ajuste del ID de transacción para las instancias de Cloud SQL.
Subtipo: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE

Aplica recomendaciones

Evalúa las recomendaciones con cuidado y realiza una de las siguientes acciones:

Optimiza el rendimiento de la instancia

Para abordar el problema de ajuste del ID de transacción con la instancia, haz lo siguiente:

  1. Encuentra la base de datos y la tabla que causan el ajuste.

  2. Explora y, además, interpreta las métricas de uso del ID de transacción en tus instancias de base de datos.

  3. Verifica si hay un ID de transacción atascado

  4. Quita los bloqueadores de VACUUM

  5. Comprueba y acelera la velocidad de VACUUM.

Si deseas obtener información adicional, consulta la entrada de blog Usa VACUUM para acelerar la inmovilización de ID de transacciones en Cloud SQL para PostgreSQL.

Evita el ajuste del ID de transacción

Para evitar el ajuste del ID de transacción de una instancia, ejecuta el siguiente comando:

SELECT * FROM google_vacuum_mgmt.pg_fix_wraparound();

Resultado de ejemplo:

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%

¿Qué sigue?