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
ocloudsql.viewer
.Aplicar recomendaciones Uno de estos roles: recommender.cloudsqlAdmin
,cloudsql.editor
ocloudsql.admin
. -
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 theserviceusage.services.enable
permission. Learn how to grant roles.
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:
Ve a la página Instancias de Cloud SQL.
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:
Ve al centro de recomendaciones. Consulta también el artículo Primeros pasos con el centro de recomendaciones.
En la tarjeta Mejorar el rendimiento de la instancia de Cloud SQL, haz clic en Ver todo.
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 proyectoLOCATION
: una región, comous-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, comous-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, comous-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, comous-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:
Para examinar la recomendación, haga clic en Ver instancia. Consulte el artículo Optimizar el rendimiento de su instancia o Evitar que se repitan los IDs de transacción y siga las recomendaciones.
Para rechazar la recomendación y que aparezca atenuada, haz clic en Rechazar.
Para cerrar el panel sin aplicar ni rechazar la recomendación, haz clic en Cancelar.
Optimizar el rendimiento de una instancia
Para solucionar el problema de envolvente del ID de transacción con la instancia, haga lo siguiente:
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
- Monitorizar la disponibilidad de discos
- Identificar instancias de Cloud SQL inactivas
- Reducir el número de instancias de Cloud SQL con sobreprovisionamiento
- Consultar Google Cloud recomendaciones