GSP921

Visão geral
Neste laboratório, você vai usar o SQL Insights para analisar o desempenho do banco de dados do Cloud SQL. Você vai modificar um aplicativo do Google Kubernetes Engine (GKE) com a biblioteca SQLcommenter para anotar as consultas do aplicativo com comentários que vão ajudar a identificar a origem das consultas.
É preciso criar ou configurar os serviços e recursos especificados em cada tarefa e seguir as instruções detalhadas para concluir cada uma delas.
Objetivos
Neste laboratório, você vai aprender a fazer o seguinte:
- Configurar e usar o SQL Insights.
- Configurar um aplicativo para usar o SQLcommenter.
- Ajustar e otimizar o banco de dados para melhorar o desempenho.
Configuração e requisitos
Antes de clicar no botão Começar o Laboratório
Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é ativado quando você clica em Iniciar laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.
Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, e não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.
Confira os requisitos para concluir o laboratório:
- Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima (recomendado) ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e de estudante, o que poderia causar cobranças extras na sua conta pessoal.
- Tempo para concluir o laboratório: não se esqueça que, depois de começar, não será possível pausar o laboratório.
Observação: use apenas a conta de estudante neste laboratório. Se usar outra conta do Google Cloud, você poderá receber cobranças nela.
Como iniciar seu laboratório e fazer login no console do Google Cloud
-
Clique no botão Começar o laboratório. Se for preciso pagar por ele, uma caixa de diálogo vai aparecer para você selecionar a forma de pagamento.
No painel Detalhes do Laboratório, à esquerda, você vai encontrar o seguinte:
- O botão Abrir Console do Google Cloud
- O tempo restante
- As credenciais temporárias que você vai usar neste laboratório
- Outras informações, se forem necessárias
-
Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.
O laboratório ativa os recursos e depois abre a página Fazer Login em outra guia.
Dica: coloque as guias em janelas separadas lado a lado.
Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
-
Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.
{{{user_0.username | "Username"}}}
Você também encontra o nome de usuário no painel Detalhes do Laboratório.
-
Clique em Próxima.
-
Copie a Senha abaixo e cole na caixa de diálogo de Olá.
{{{user_0.password | "Password"}}}
Você também encontra a senha no painel Detalhes do Laboratório.
-
Clique em Próxima.
Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud.
Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
-
Acesse as próximas páginas:
- Aceite os Termos e Condições.
- Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
- Não se inscreva em testes gratuitos.
Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.
Observação: para acessar os produtos e serviços do Google Cloud, clique no Menu de navegação ou digite o nome do serviço ou produto no campo Pesquisar.
Ativar o Cloud Shell
O Cloud Shell é uma máquina virtual com várias ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud. O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.
-
Clique em Ativar o Cloud Shell
na parte de cima do console do Google Cloud.
-
Clique nas seguintes janelas:
- Continue na janela de informações do Cloud Shell.
- Autorize o Cloud Shell a usar suas credenciais para fazer chamadas de APIs do Google Cloud.
Depois de se conectar, você verá que sua conta já está autenticada e que o projeto está configurado com seu Project_ID, . A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
A gcloud
é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.
- (Opcional) É possível listar o nome da conta ativa usando este comando:
gcloud auth list
- Clique em Autorizar.
Saída:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Opcional) É possível listar o ID do projeto usando este comando:
gcloud config list project
Saída:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Observação: consulte a documentação completa da gcloud
no Google Cloud no guia de visão geral da gcloud CLI.
Ativar as APIs
É preciso ativar as APIs necessárias para este laboratório. Você vai criar e enviar um contêiner para o Artifact Registry em uma tarefa posterior, então precisa ativar a API Artifact Registry primeiro.
gcloud services enable sqladmin.googleapis.com
gcloud services enable artifactregistry.googleapis.com
Gerar as credenciais do cluster do Kubernetes
- Configure a autenticação do cluster do Kubernetes que foi implantado para você no início do laboratório. Esse processo cria um arquivo
config
em uma pasta .kube
(oculta) na sua pasta inicial.
export ZONE={{{project_0.default_zone | Zone}}}
gcloud container clusters get-credentials postgres-cluster --zone=$ZONE
Executar o aplicativo gMemgen
-
Em um navegador, acesse o endereço IP de entrada do balanceador de carga.
-
É possível criar um link clicável para o endereço IP externo do balanceador de carga no Cloud Shell usando os seguintes comandos:
export LOAD_BALANCER_IP=$(kubectl get svc gmemegen-service \
-o=jsonpath='{.status.loadBalancer.ingress[0].ip}' -n default)
echo gMemegen Load Balancer Ingress IP: http://$LOAD_BALANCER_IP
- Clique no link no Cloud Shell e o aplicativo gMemegen será executado no navegador.
Tarefa 1: Analisar consultas SQL de aplicativos do GKE usando o SQL Insights
Nesta tarefa, você vai examinar as consultas geradas pelo aplicativo gMemegen. Será preciso gerar tráfego criando memes com o aplicativo e visualizando-os nas páginas Recentes
e Aleatório
do aplicativo.
Ative o SQL Insights na sua instância do Cloud SQL para PostgreSQL
Para concluir esta tarefa, é preciso ativar o SQL Insights no banco de dados do Cloud SQL.
-
No console do Cloud, acesse Bancos de dados > SQL e selecione a instância postgres-gmemegen
.
-
No menu Instância primária, selecione Query Insights.
-
Clique no botão Ativar.
-
Na página Instância primária > Query Insights, em Principais consultas e tags, selecione a guia Tags.
-
Clique em Armazenar tags de aplicativos
Criar e visualizar memes
Nesta etapa, você vai criar pelo menos quatro memes novos e acessá-los pelo aplicativo gMemegen. O objetivo é testar o aplicativo, gerando alguns dados de amostra e usando todas as rotas disponíveis.
-
Na guia do aplicativo gMemegen, acesse a página Início e selecione uma imagem.
-
Na página do novo meme, insira texto nas caixas de texto de cima e de baixo. Crie qualquer meme que vier à cabeça.
-
Clique no botão Enviar. Seu novo meme vai aparecer.
-
Retorne usando o botão Voltar do navegador.
-
Clique no item de menu Recentes para conferir os memes que você criou recentemente.
-
Clique no item de menu Ordenado para ver os memes em ordem alfabética pelo texto principal.
-
Clique no item de menu Aleatório para ver um meme aleatório. Feche a guia Aleatório
no navegador.
-
Clique no item de menu Início para voltar à página inicial e criar um novo meme.
Siga os pontos 1 a 8 acima até criar pelo menos quatro novos memes.

Analisar a atividade do banco de dados do aplicativo gMemegen usando o SQL Insights
-
No menu Instância principal, acesse Query Insights.
-
Abra o menu suspenso no campo Bancos de dados e selecione gmemegen_db
. Se gmemegen_db
não aparecer na lista, atualize a página. Pode levar algum tempo para que gmemegen_db
fique disponível na lista. Pode ser útil gerar mais tráfego de banco de dados realizando mais ações no aplicativo gMemegen
.

- Role para baixo até
Principais consultas e tags
e observe que as consultas geradas pelo aplicativo gMemegen estão listadas na guia Consultas.

- Clique na guia Tags e observe que não aparece nenhuma tag no momento.
O SQL Insights não consegue diferenciar as origens das consultas porque elas não têm tags. Há uma ferramenta para desenvolvedores de banco de dados chamada SQLcommenter, que pode ajudar adicionando comentários às consultas do aplicativo, o que preenche as tags nessa visualização. Isso ajuda bastante desenvolvedores e testadores a rastrearem a origem das consultas do aplicativo, ajudando na depuração e na otimização.
Anote o horário atual para comparar os resultados no SQL Insights antes e depois de incluir a biblioteca SQLcommenter no código do aplicativo.
Clique em Verificar meu progresso para conferir o objetivo.
Analisar as consultas SQL do aplicativo do GKE usando o SQL Insights.
Tarefa 2: Ativar o SQLcommenter em um aplicativo do GKE
Nesta tarefa, você vai modificar o aplicativo gMemegen para incluir o código da biblioteca SQLcommenter, que vai anotar as consultas do aplicativo para torná-las mais úteis no SQL Insights.
Modificar o aplicativo gMemegen e recriar o código-fonte
Nesta etapa, você vai modificar o código do aplicativo Python main.py
do app gMemegen para ativar o SQLcommenter. As mudanças já estão no código e você só precisa remover as marcas de comentário. Isso pode ser feito com um simples comando sed. Você também vai recriar o aplicativo e armazenar a nova imagem no Artifact Registry.
- No Cloud Shell, faça o download do código-fonte do aplicativo gMemegen:
gsutil -m cp -r gs://spls/gsp921/gmemegen .
Para ativar o SQLcommenter, remova os comentários do seguinte bloco de código no arquivo Python gmemegen/app/main.py
para configurar o aplicativo e adicionar tags a consultas usando o SQLcommenter.
##from sqlalchemy import event
##from google.cloud.sqlcommenter.sqlalchemy.executor import BeforeExecuteFactory
app = Flask(__name__)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
##app.config['SQLALCHEMY_RECORD_QUERIES'] = True
app.config['SQLALCHEMY_ECHO'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = get_db_uri()
db = SQLAlchemy(app)
##listener = BeforeExecuteFactory(with_db_driver=True)
##event.listen(db.engine, 'before_cursor_execute', listener, retval=True)
- No Cloud Shell, para remover a marca de comentário do código do aplicativo gMemegen que ativa o SQLcommenter, execute:
sed -i 's/##//g' gmemegen/app/main.py
- No Cloud Shell, para identificar a versão atualizada, altere o modelo de cabeçalho do aplicativo:
sed -i 's/gMemegen/gMemegen (SQLcommenter)/g' gmemegen/app/templates/header.html
Criar e enviar uma nova imagem para o Artifact Registry
Nesta etapa, você vai criar o código do aplicativo modificado e enviar a imagem para o Artifact Registry, rotulada como a versão 2.
- Configure a autenticação do Docker para o Artifact Registry:
export REGION={{{project_0.default_region | REGION}}}
gcloud auth configure-docker ${REGION}-docker.pkg.dev
Digite Y
se for solicitada uma confirmação.
-
Crie o repositório de artefatos:
export REPO=gmemegen
gcloud artifacts repositories create $REPO \
--repository-format=docker --location=$REGION
-
Crie e envie a nova imagem para o Artifact Registry:
cd gmemegen
export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
gcloud builds submit --tag ${REGION}-docker.pkg.dev/${PROJECT_ID}/gmemegen/gmemegen-app:v2
O processo de criação e envio vai levar alguns minutos. Ao terminar, a saída deve indicar um build bem-sucedido, como abaixo.
Saída:
ID: 801538cf-f0e5-43b4-b0e4-5071ad026bf3
CREATE_TIME: 2022-08-10T18:41:21+00:00
DURATION: 1M27S
SOURCE: gs://qwiklabs-gcp-04-2dea2c1461c0_cloudbuild/source/1660156876.254161-89dl7080030e49f28e42ab7dc207d91a.tgz
IMAGES: us-east1-docker.pkg.dev/qwiklabs-gcp-04-2dea2c1461c0/gmemegen/gmemegen-app:v2
STATUS: SUCCESS
Clique em Verificar meu progresso para conferir o objetivo.
Ativar o SQLcommenter em um aplicativo do GKE.
Tarefa 3: Reimplantar o aplicativo gMemegen
Nesta tarefa, você vai reimplantar o aplicativo gMemegen modificado. Depois será possível comparar as consultas das duas versões do aplicativo usando o SQL Insights.
-
No Cloud Shell, para atualizar o YAML de implantação com o ID do projeto, o nome da conexão do Cloud SQL e a região, execute:
export CLOUDSQL_INSTANCE=postgres-gmemegen
export CONNECTION_NAME=$(gcloud sql instances describe $CLOUDSQL_INSTANCE --format 'value(connectionName)')
sed -i "s/CONNECTION-NAME/${CONNECTION_NAME}/g" gmemegen_canary_deployment.yaml
export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
sed -i "s/PROJECT-ID/${PROJECT_ID}/g" gmemegen_canary_deployment.yaml
export REGION={{{project_0.default_region | REGION}}}
sed -i "s/us-central1/${REGION}/g" gmemegen_canary_deployment.yaml
-
No Cloud Shell, implante o aplicativo novamente com o seguinte comando:
kubectl apply -f gmemegen_canary_deployment.yaml
-
No Cloud Shell, reimplante o balanceador de carga, selecionando a versão 2.0
do app:
sed -i "s/1.0/2.0/g" gmemegen-service.yaml
kubectl apply -f gmemegen-service.yaml
-
No Cloud Shell, verifique se a implantação foi concluída com o seguinte comando:
kubectl get pods
Saída:
NAME READY STATUS RESTARTS AGE
gmemegen-7975bf9776-fl7g9 2/2 Running 0 7m46s
gmemegen-canary-7cc8687cfc-rqx4h 2/2 Running 0 33s
Agora você tem uma nova implantação do aplicativo gMemegen em execução.
Clique em Verificar meu progresso para conferir o objetivo.
Reimplantar o aplicativo gMemegen.
Tarefa 4: Analisar consultas do aplicativo no SQL Insights
Nesta tarefa, você vai voltar ao SQL Insights para analisar a atividade do banco de dados do aplicativo atualizado, incluindo o SQLcommenter. Primeiro, você precisa gerar mais atividade no banco de dados criando alguns memes usando a nova versão do app.
Criar memes novos
Nesta etapa, você vai criar novos memes usando a nova versão do aplicativo implantado na Tarefa 3. O aplicativo mostra (SQLcommenter)
ao lado do nome dele na barra de menus para indicar que é um novo app.

- Mude para a guia do aplicativo gMemegen e gere tráfego no banco de dados. Para isso, crie novos memes e clique nos links Recentes e Ordenado algumas vezes.
Analisar consultas do aplicativo no SQL Insights
Nesta etapa, você vai analisar as consultas do aplicativo recém-implantado e observar as tags inseridas pelo SQLcommenter.
-
Na guia do console do Cloud, na página Instância principal > Query Insights, em Principais consultas e tags, selecione a guia Tags.
-
Clique no nome da coluna Carregar por tempo total
. Isso atualiza a lista de consultas marcadas com tag, mostrando todas as consultas recentes que foram marcadas pelo SQLcommenter.
As tags Controlador
, Rota
, Driver DB
e Framework
agora estão preenchidas.
Se você não encontrar essa consulta na guia Tags, atualize a página da Web, clique na guia Tags e clique novamente no nome da coluna Carregar por tempo total
.
(continuação - para largura)

Identificar uma consulta com execução lenta no SQL Insights
Nesta etapa, você vai analisar o desempenho das consultas do aplicativo para identificar uma consulta lenta.
- No console do Cloud, na página Query Insights, role para baixo até
Principais consultas e tags
.

-
Clique na guia Tags.
-
Selecione a tag com /sorted
na coluna Route
.
Ela deve ter a maior carga, como indicado pelas barras verdes, mas, dada a quantidade relativamente pequena de dados no laboratório, esse pode não ser o caso. O gráfico Latência da consulta no seu laboratório provavelmente vai mostrar apenas alguns pontos, mas, com mais dados, você vai conseguir identificar consultas com valores de alta latência (P95 e P99).

-
Volte à visualização Principais consultas e tags usando o botão Voltar no seu navegador. Também é possível usar o caminho na parte superior da página Query Insights e selecionar a instância postgres-gmemegen
.
-
Selecione a tag /recent
na coluna Route
, que deve ter uma carga e latência um pouco menores. Novamente, no seu laboratório, isso vai mostrar apenas os resultados de pontos que podem não diferir muito da rota /sorted
.

Essas consultas retornam aproximadamente o mesmo número de linhas. Por que o desempenho delas é diferente? A resposta está no fato de que o campo meme.id
é a chave primária da tabela meme
e, portanto, é indexado, enquanto o campo meme.top_text
não é indexado e, portanto, leva mais tempo para ser executado.
Observação: como o banco de dados gmemegen_db
é muito pequeno, com apenas as linhas que você gerou pela interface durante o laboratório, a diferença de desempenho dessas duas rotas pode não ser imediatamente óbvia ou perceptível. Em um ambiente de produção, a diferença de desempenho das consultas que classificam campos indexados e não indexados certamente será aparente.
Tarefa 5: Ajustar e otimizar o banco de dados para melhorar o desempenho
Nesta tarefa, você vai modificar o banco de dados gmemegen_db
para corrigir a consulta lenta identificada na tarefa anterior.
Adicionar um índice ao banco de dados do Cloud SQL para PostgreSQL
Nesta etapa, você vai adicionar um índice a uma coluna do banco de dados para melhorar o desempenho.
-
No console do Cloud, na página Instância principal > Visão geral, na seção Conectar-se a esta instância, clique em Abrir o Cloud Shell. Um comando vai preencher automaticamente o console do Cloud Shell. Execute-o.
-
Quando solicitado, insira a senha supersecret!
.
-
No comando postgres=>
em psql, execute o seguinte:
\c gmemegen_db
-
Você vai precisar digitar a senha de novo. Digite supersecret!
.
-
No comando gmemegen_db=>
em psql, execute o seguinte:
CREATE INDEX idx_meme_top_text ON meme(top_text);
- Abra a guia do aplicativo gMemegen e clique no link Ordenado algumas vezes para gerar novas consultas.
Conferir o desempenho da consulta
Nesta etapa, você vai verificar o desempenho da consulta lenta agora que um índice foi adicionado à coluna em que ela está sendo classificada.
-
No console do Cloud, na página Instância principal > Query Insights, em Principais consultas e tags, na guia Tags, selecione a tag /sorted
de novo.
-
Role para baixo até o gráfico Latência da consulta e observe que a latência agora deve estar reduzida.

Observação: como o banco de dados tem uma quantidade relativamente pequena de dados, talvez não haja uma diferença perceptível no seu laboratório.
Clique em Verificar meu progresso para conferir o objetivo.
Ajustar e otimizar o banco de dados para melhorar o desempenho.
Você concluiu este laboratório.
Parabéns!
Termine a Quest
Este laboratório autoguiado faz parte da Quest Gerenciar bancos de dados PostgreSQL no Cloud SQL. Uma Quest é uma série de laboratórios relacionados que formam um programa de aprendizado. Ao concluir uma Quest, você ganha um selo como reconhecimento da sua conquista. É possível publicar os selos e incluir um link para eles no seu currículo on-line ou nas redes sociais. Inscreva-se nesta Quest e receba créditos de conclusão imediatamente. Consulte o catálogo do Google Cloud Ensina para conferir todas as Quests disponíveis.
Manual atualizado em 4 de julho de 2024
Laboratório testado em 4 de julho de 2024
Copyright 2025 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.