Evite a repetição do ID da transação

O recomendador de utilização elevada do ID da transação do Cloud SQL gera proativamente recomendações que ajudam a evitar uma potencial repetição do ID da transação para instâncias do Cloud SQL para PostgreSQL. O recomendador de utilização de IDs de transação elevados do Cloud SQL só é suportado para instâncias da edição Cloud SQL Enterprise Plus.

Pode aplicar esta recomendação quando uma instância do Cloud SQL estiver a evoluir para um problema de repetição do ID da transação. Esta página descreve como funciona a recomendação de utilização elevada do ID da transação do Cloud SQL e como pode usá-la.

Como funciona

É atribuído um ID da transação quando a transação começa e este fica congelado até que a transação seja eliminada. A utilização do ID da transação é o número de transações não eliminadas (atribuídas menos congeladas) expresso como uma fração do valor máximo de 2 mil milhões. Nas predefinições do PostgreSQL, com os processos de vácuo a funcionar de forma ideal e sem interrupções, a maioria das bases de dados regista uma utilização do ID da transação na ordem de aproximadamente 10%. Podem observar-se níveis de utilização de IDs de transações mais elevados em bases de dados ocupadas, onde os fluxos de trabalho normais têm frequentemente precedência sobre o vácuo. Se as tendências de utilização do ID da transação tenderem para valores muito elevados (80% ou mais), a base de dados pode estar em risco de esgotamento do ID da transação. A utilização do ID da transação a atingir 100% é denominada reversão do ID da transação. Quando a percentagem de utilização do ID da transação atinge 100%, o PostgreSQL deixa de aceitar consultas de escrita.

O recomendador de utilização elevada de IDs de transação do Cloud SQL analisa a utilização de IDs de transação numa instância do Cloud SQL para PostgreSQL.

Se a percentagem de utilização do ID da transação for igual ou superior a 80%, recomendamos que tome medidas para evitar a repetição do ID da transação.

Preços

O recomendador de utilização elevada do ID da transação do Cloud SQL está no nível de preços do recomendador padrão.

Antes de começar

Antes de poder ver recomendações e estatísticas, faça o seguinte:

  • Para receber as autorizações para ver e trabalhar com estatísticas e recomendações, certifique-se de que tem as funções necessárias.
    Tasks Funções
    Ver recomendações Uma destas funções: recommender.cloudsqlViewer ou cloudsql.viewer.
    Aplique recomendações Uma destas funções: recommender.cloudsqlAdmin, cloudsql.editor ou cloudsql.admin.
    Para mais informações sobre funções, consulte os artigos Compreender as funções e Conceder autorizações de IAM.
  • 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

Apresente recomendações para melhorar o desempenho das instâncias

Pode listar as recomendações de melhoria do desempenho da instância através da Google Cloud consolagcloud CLI ou da API Recommender.

As recomendações para melhorar o desempenho das instâncias só são apresentadas se tiver instâncias que se estejam a aproximar de uma repetição do ID da transação.

Consola

Para ver recomendações sobre o desempenho da instância através da consolaGoogle Cloud , siga estes passos:

  1. Aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Clique em Ver tudo no banner de recomendações Evite a repetição cíclica do ID da transação.

Em alternativa, siga estes passos:

  1. Aceda ao Active Assist. Consulte também o artigo Começar a usar o Centro de Recomendações.

    Aceda ao Active Assist

  2. No cartão Melhore o desempenho da instância do Cloud SQL, clique em Ver tudo.

  3. Selecione as instâncias com a recomendação Impedir a repetição do ID da transação.

CLI gcloud

Para apresentar uma lista de recomendações de melhoria do desempenho das instâncias através de gcloud CLI, execute o comando gcloud recommender recommendations list da seguinte forma:

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

Substitua o seguinte:

  • PROJECT_ID: o ID do seu projeto
  • LOCATION: uma região, como us-central1

API

Para apresentar uma lista de recomendações de melhoria do desempenho das instâncias através da API Recommendations, chame o método recommendations.list da seguinte forma:

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

Substitua o seguinte:

  • PROJECT_ID: o ID do seu projeto.
  • LOCATION: uma região, como us-central1.

Se o motor de recomendações detetar instâncias com uma utilização elevada do ID da transação, apresenta-as numa tabela com outras recomendações de desempenho. Cada linha mostra o ID da instância, uma breve recomendação, o motor da base de dados, a localização e a data da última atualização.

Veja estatísticas e recomendações detalhadas

Pode ver estatísticas e recomendações detalhadas sobre instâncias que estão a aproximar-se de uma repetição do ID da transação através da Google Cloud consola, gcloud CLI ou da API Recommender.

Consola

Para ver estatísticas e recomendações detalhadas sobre instâncias que estão perto do limite de desempenho através da Google Cloud consola, clique no link de recomendação na lista de instâncias.

CLI gcloud

Para ver estatísticas e recomendações detalhadas sobre instâncias que estão perto do limite de desempenho através de gcloud CLI, execute o comando gcloud recommender insights list da seguinte forma:

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

Substitua o seguinte:

  • PROJECT_ID: o ID do seu projeto.
  • LOCATION: uma região, como us-central1.

API

Para ver estatísticas e recomendações detalhadas sobre instâncias que estão perto do limite de desempenho através da API Recommendations, chame o método insights.list da seguinte forma:

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

Substitua o seguinte:

  • PROJECT_ID: o ID do seu projeto.
  • LOCATION: uma região, como us-central1.

A tabela seguinte indica a estatística e a recomendação que o recomendador de utilização elevada do ID de transação do Cloud SQL gera. Os subtipos são visíveis nos resultados da API e do gcloud CLI.

Insight Recomendação
A percentagem de utilização do ID da transação nesta instância é elevada e está perto de 100%.
Subtype: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION
Evite a potencial repetição do ID da transação para instâncias do Cloud SQL.
Subtype: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE

Aplique recomendações

Avalie cuidadosamente as recomendações e faça uma das seguintes ações:

Otimize o desempenho da sua instância

Para resolver o problema de repetição do ID da transação com a instância, faça o seguinte:

  1. Encontre a base de dados e a tabela que estão a causar a repetição.

  2. Explore e interprete as métricas de utilização do ID da transação nas instâncias da base de dados.

  3. Verifique se existe um ID da transação bloqueado.

  4. Remova os bloqueadores de VÁCUO.

  5. Verifique e acelere a velocidade do VACUUM.

Para mais informações, consulte também a publicação no blogue Usar o VACUUM para acelerar o congelamento do ID da transação no Cloud SQL para PostgreSQL.

Evite a repetição do ID da transação

Para evitar a repetição do ID da transação para uma instância, execute o seguinte comando:

SELECT * FROM google_vacuum_mgmt.pg_fix_wraparound();

Exemplo de saída:

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%

O que se segue?