GSP921
Descripción general
En este lab, usarás SQL Insights para analizar el rendimiento de una base de datos de Cloud SQL. Modificarás una aplicación de Google Kubernetes Engine (GKE) existente con la biblioteca SQLcommenter para anotar las consultas de la aplicación con comentarios que te ayudarán a identificar su fuente en la aplicación.
Debes crear o configurar los servicios y recursos que se especifican y seguir las instrucciones detalladas que se proporcionan para completar cada tarea de forma correcta.
Objetivos
En este lab, aprenderás a realizar las siguientes tareas:
- Configurar y utilizar SQL Insights
- Configurar una aplicación para usar SQLcommenter
- Tomar medidas para ajustar y optimizar una base de datos y mejorar el rendimiento
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
- Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón para abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debes usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haz clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
Activa Cloud Shell
Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
-
Haz clic en Activar Cloud Shell
en la parte superior de la consola de Google Cloud.
-
Haz clic para avanzar por las siguientes ventanas:
- Continúa en la ventana de información de Cloud Shell.
- Autoriza a Cloud Shell para que use tus credenciales para realizar llamadas a la API de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu Project_ID, . El resultado contiene una línea que declara el Project_ID para esta sesión:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
- Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
- Haz clic en Autorizar.
Resultado:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project
Resultado:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Nota: Para obtener toda la documentación de gcloud, en Google Cloud, consulta la guía con la descripción general de gcloud CLI.
Habilita las APIs
Debes habilitar las APIs necesarias para este lab. Compilarás y enviarás un contenedor a Artifact Registry en una tarea posterior, por lo que primero debes habilitar la API de Artifact Registry.
- En Cloud Shell, ejecuta el siguiente comando:
gcloud services enable sqladmin.googleapis.com
gcloud services enable artifactregistry.googleapis.com
Obtén credenciales para el clúster de Kubernetes
- Debes configurar la autenticación del clúster de Kubernetes que se implementó para ti cuando comenzó el lab. Este proceso crea un archivo
config en una carpeta (oculta) .kube en tu carpeta principal.
export ZONE={{{project_0.default_zone | Zone}}}
gcloud container clusters get-credentials postgres-cluster --zone=$ZONE
Ejecuta la aplicación gMemgen
-
En un navegador, ve a la dirección IP de entrada del balanceador de cargas.
-
Puedes crear un vínculo en el que se pueda hacer clic que lleve a la dirección IP externa del balanceador de cargas en Cloud Shell con los siguientes 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
- Haz clic en el vínculo en Cloud Shell y verás la aplicación gMemegen que se ejecuta en el navegador.
Tarea 1: Examina las consultas en SQL de la aplicación de GKE con SQL Insights
En esta tarea, examinarás las consultas que genera la aplicación gMemegen. Deberás generar algo de tráfico. Para ello, tendrás que crear memes con la aplicación y visualizarlos en sus páginas Recent y Random.
Habilita SQL Insights en tu instancia de Cloud SQL para PostgreSQL
Para completar esta tarea, debes habilitar SQL Insights en la base de datos de Cloud SQL.
-
En la consola de Cloud, ve a Bases de datos > Cloud SQL y selecciona la instancia postgres-gmemegen.
-
En el menú Instancia principal, selecciona Estadísticas de consultas.
-
Haz clic en el botón Habilitar.
-
En la página Instancia principal > Estadísticas de consultas, en Etiquetas y búsquedas más frecuentes, selecciona la pestaña Etiquetas.
-
Haz clic en Almacenar etiquetas de aplicación
Crea y visualiza algunos memes
En este paso, crearás al menos cuatro memes nuevos y los verás con la aplicación gMemegen. El objetivo es probar repetidamente la aplicación, generar algunos datos de muestra y usar todas las rutas disponibles.
-
En la pestaña de la aplicación gMemegen, ve a la página principal y selecciona una imagen.
-
En la página para crear un nuevo meme, escribe algo en los cuadros de texto de la parte superior y la parte inferior. Puedes crear cualquier meme que se te ocurra.
-
Haz clic en el botón Enviar. Verás cómo se renderiza tu nuevo meme.
-
Regresa usando el botón Atrás del navegador.
-
Haz clic en el elemento de menú Recientes para ver los memes recientes que creaste.
-
Haz clic en el elemento de menú Ordenados para ver los memes ordenados alfabéticamente por texto principal.
-
Haz clic en el elemento de menú Aleatorio para ver un meme aleatorio. Cierra la pestaña Aleatorio en el navegador.
-
Haz clic en el elemento de menú página principal para regresar y crear un meme nuevo.
Ejecuta los puntos 1 al 8 mencionados con anterioridad hasta que hayas creado al menos 4 memes nuevos.

Examina la actividad de la base de datos de la aplicación gMemegen con SQL Insights
-
En el menú Instancia principal, ve a Estadísticas de consultas.
-
Abre el menú desplegable en el campo Bases de datos y selecciona gmemegen_db. Si no ves gmemegen_db en la lista, actualiza la página. Es posible que gmemegen_db tarde un poco en estar disponible en la lista. Generar más tráfico de base de datos realizando más acciones en la aplicación gMemegen podría ser de ayuda.

- Desplázate hacia abajo hasta
Etiquetas y búsquedas más frecuentes. Las consultas que genera la aplicación gMemegen se enumeran en la pestaña Consultas.

- Haz clic en la pestaña Etiquetas. Verás que no hay etiquetas en la lista en este momento.
SQL Insights no puede diferenciar los orígenes de las consultas porque no tienen etiquetas. Existe una herramienta para desarrolladores de bases de datos llamada SQLcommenter que puede servirte porque agregará comentarios a las consultas de la aplicación, lo que completará las etiquetas en esta vista. Esto es muy útil para que los desarrolladores y los verificadores realicen un seguimiento de la fuente de las consultas de la aplicación, lo que ayuda en la depuración y la optimización.
Debes anotar la hora actual para poder comparar los resultados en SQL Insights antes y después de incluir la biblioteca SQLcommenter en el código de la aplicación.
Haz clic en Revisar mi progreso para verificar el objetivo.
Examina las consultas en SQL de la aplicación de GKE con SQL Insights
Tarea 2: Habilita SQLcommenter en una aplicación de GKE
En esta tarea, modificarás la aplicación de gMemegen para incluir el código de la biblioteca SQLcommenter, que anotará las consultas de la aplicación para que sean más útiles en SQL Insights.
Modifica la aplicación de gMemegen y vuelve a compilar el código fuente
En este paso, modificarás el código de Python del archivo main.py de la app de gMemegen para habilitar SQLcommenter. Los cambios ya están en el código y solo se deben quitar los comentarios, por lo que esto se puede lograr con un comando sed simple. También volverás a compilar la aplicación y almacenarás la nueva imagen en Artifact Registry.
- En Cloud Shell, descarga el código fuente de la aplicación gMemegen:
gsutil -m cp -r gs://spls/gsp921/gmemegen .
Para habilitar SQLcommenter, quita los comentarios del siguiente bloque de código en el archivo de Python gmemegen/app/main.py. De este modo, la aplicación quedará lista para agregar etiquetas a las consultas con 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)
- Para quitar los comentarios del código de la aplicación de gMemegen que habilita SQLcommenter, ejecuta el siguiente comando en Cloud Shell:
sed -i 's/##//g' gmemegen/app/main.py
- En Cloud Shell, cambia la plantilla de encabezado de la aplicación para identificar la versión actualizada:
sed -i 's/gMemegen/gMemegen (SQLcommenter)/g' gmemegen/app/templates/header.html
Compila y envía una nueva imagen a Artifact Registry
En este paso, compilarás el código de la aplicación modificado y enviarás la imagen, etiquetada como "versión 2", a Artifact Registry.
- Configura la autenticación de Docker para Artifact Registry:
export REGION={{{project_0.default_region | REGION}}}
gcloud auth configure-docker ${REGION}-docker.pkg.dev
Ingresa Y si se te solicita una confirmación.
-
Crea el repositorio de artefactos:
export REPO=gmemegen
gcloud artifacts repositories create $REPO \
--repository-format=docker --location=$REGION
-
Compila y envía la nueva imagen a 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
El proceso de compilación y envío tardará unos minutos en completarse. Cuando esté listo, el resultado debería indicar una compilación correcta, como se muestra a continuación.
Resultado:
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
Haz clic en Revisar mi progreso para verificar el objetivo.
Habilita SQLcommenter en una aplicación de GKE
Tarea 3: Vuelve a implementar la aplicación gMemegen
En esta tarea, volverás a implementar la aplicación gMemegen modificada. Luego, podrás comparar las consultas de las dos versiones de la aplicación con SQL Insights.
-
Para actualizar el archivo YAML de implementación con el ID del proyecto, el nombre de la conexión de Cloud SQL y la región ejecuta el siguiente comando en Cloud Shell:
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
-
En Cloud Shell, vuelve a implementar la aplicación ejecutando el siguiente comando:
kubectl apply -f gmemegen_canary_deployment.yaml
-
En Cloud Shell, vuelve a implementar el balanceador de cargas y selecciona versión 2.0 como versión de la aplicación:
sed -i "s/1.0/2.0/g" gmemegen-service.yaml
kubectl apply -f gmemegen-service.yaml
-
En Cloud Shell, ejecuta el siguiente comando para verificar que la implementación se haya realizado correctamente:
kubectl get pods
Resultado:
NAME READY STATUS RESTARTS AGE
gmemegen-7975bf9776-fl7g9 2/2 Running 0 7m46s
gmemegen-canary-7cc8687cfc-rqx4h 2/2 Running 0 33s
Ahora tienes una nueva implementación de la aplicación gMemegen en ejecución.
Haz clic en Revisar mi progreso para verificar el objetivo.
Vuelve a implementar la aplicación gMemegen
Tarea 4: Revisa las consultas de la aplicación en SQL Insights
En esta tarea, volverás a SQL Insights para revisar la actividad de la base de datos de la aplicación actualizada, lo que incluye SQLcommenter. Primero, deberás generar más actividad en la base de datos. Para ello, deberás crear algunos memes con la nueva versión de la app.
Crea algunos memes nuevos
En este paso, crearás memes nuevos con la nueva versión de la aplicación que implementaste en la Tarea 3. La aplicación muestra (SQLcommenter) junto a su nombre en la barra de menú para indicar que es una nueva app.

- Cambia a la pestaña de la aplicación gMemegen y genera tráfico de base de datos. Para ello, crea algunos memes nuevos y haz clic en los vínculos Recientes y Ordenados varias veces.
Revisa las consultas de la aplicación en SQL Insights
En este paso, revisarás las consultas de la aplicación que se acaba de implementar y anotarás las etiquetas que insertó SQLcommenter.
-
En la pestaña de la consola de Cloud, ve a la página Instancia principal > Estadísticas de consultas. En Etiquetas y búsquedas más frecuentes, selecciona la pestaña Etiquetas.
-
Haz clic en el nombre de la columna Carga por tiempo total. Esta acción debería actualizar la lista de consultas etiquetadas y mostrar todas las consultas recientes que SQLcommenter etiquetó.
Observa que las etiquetas Controller, Route, DB Driver y Framework ahora se completaron.
Si no puedes ver esta consulta en la pestaña Etiquetas, actualiza la página web, selecciona la pestaña Etiquetas y vuelve a hacer clic en el nombre de la columna Carga por tiempo total.
(continuación, debido al ancho de la tabla)

Identifica una consulta de ejecución lenta en SQL Insights
En este paso, analizarás el rendimiento de las consultas de la aplicación para identificar una consulta de ejecución lenta.
- En la página Estadísticas de consultas de la consola de Cloud, desplázate hacia abajo hasta
Etiquetas y búsquedas más frecuentes.

-
Haz clic en la pestaña Etiquetas.
-
Selecciona la etiqueta con /sorted en la columna Ruta.
Debería tener la carga más alta, como lo indican las barras verdes, pero con la cantidad relativamente pequeña de datos en el lab, es posible que no sea así. El gráfico Latencia de las consultas de tu lab probablemente mostrará solo unos pocos registros, pero, con datos adicionales, te permitirá ver las consultas que tienen valores de latencia altos (P95 y P99).

-
Regresa a la vista Etiquetas y búsquedas más frecuentes con el botón Atrás del navegador. Como alternativa, puedes usar las rutas de navegación en la parte superior de la página Estadísticas de consultas y seleccionar la instancia postgres-gmemegen.
-
Selecciona la etiqueta /recent en la columna Ruta, que debería tener una carga y una latencia ligeramente más bajas. En tu lab, esta acción solo mostrará resultados que tal vez no difieran significativamente de la ruta /sorted.

Estas consultas devuelven la misma cantidad de filas. ¿Por qué su rendimiento es diferente? La respuesta está en el hecho de que el campo meme.id es la clave primaria de la tabla meme y, por lo tanto, está indexado; mientras que el campo meme.top_text no está indexado y, por lo tanto, lleva más tiempo ejecutarlo.
Nota: Dado que la base de datos gmemegen_db es muy pequeña, ya que solo tiene tantas filas como las que generaste a través de la IU durante este lab, es posible que la diferencia en el rendimiento de estas dos rutas no sea evidente de inmediato ni observable. En un entorno de producción, la diferencia en el rendimiento de las consultas que se ordenan según los campos indexados y no indexados será evidente.
Tarea 5: Toma medidas para ajustar y optimizar la base de datos y mejorar el rendimiento
En esta tarea, modificarás la base de datos gmemegen_db para corregir la consulta de ejecución lenta que identificaste en la tarea anterior.
Agrega un índice a la base de datos de Cloud SQL para PostgreSQL
En este paso, agregarás un índice a una columna de la base de datos para mejorar el rendimiento.
-
En la consola de Cloud, ve a la página Instancia principal > Descripción general. En la sección Conectarse a esta instancia, haz clic en Abrir Cloud Shell. Un comando completará automáticamente la consola de Cloud Shell. Ejecútalo.
-
Cuando se te solicite, ingresa la contraseña supersecret!.
-
En el prompt postgres=> de psql, ejecuta el siguiente comando:
\c gmemegen_db
-
Se te solicitará que ingreses la contraseña nuevamente. Escribe supersecret!.
-
En el prompt gmemegen_db=> de psql, ejecuta el siguiente comando:
CREATE INDEX idx_meme_top_text ON meme(top_text);
- Abre la pestaña de la aplicación gMemegen y haz clic en el vínculo Ordenados un par de veces para generar algunas consultas nuevas.
Verifica el rendimiento de la consulta
En este paso, verificarás el rendimiento de la consulta de ejecución lenta ahora que se agregó un índice a la columna en la que se está ordenando.
-
En la consola de Cloud, ve a la página Instancia principal > Estadísticas de consultas. En la sección Etiquetas y búsquedas más frecuentes de la pestaña Etiquetas, selecciona nuevamente la etiqueta /sorted.
-
Desplázate hacia abajo hasta el gráfico Latencia de las consultas. Deberías ver que la latencia se redujo.

Nota: Dado que la cantidad de datos en la base de datos es relativamente pequeña, es posible que no haya una diferencia apreciable en tu lab.
Haz clic en Revisar mi progreso para verificar el objetivo.
Toma medidas para ajustar y optimizar la base de datos y mejorar el rendimiento
Completaste este lab.
¡Felicitaciones!
En este lab, aprendiste a configurar y usar SQL Insights, configurar una aplicación para usar SQLcommenter y tomar medidas para ajustar y optimizar la base de datos para mejorar el rendimiento.
Última actualización del manual: 8 de diciembre de 2025
Prueba más reciente del lab: 8 de diciembre de 2024
Copyright 2026 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.