Administra recomendaciones de vistas materializadas

En este documento, se describe cómo funciona el recomendador de vistas materializadas y, también, se muestra cómo ver y aplicar las recomendaciones de vistas materializadas.

Introducción

El recomendador de vistas materializadas de BigQuery puede ayudarte a mejorar el rendimiento de las cargas de trabajo y a ahorrar costos de ejecución. Estas recomendaciones se basan en las características históricas de ejecución de consultas de los últimos 30 días.

Las vistas materializadas son vistas procesadas con anterioridad que almacenan en caché de forma periódica los resultados de una consulta para aumentar el rendimiento y la eficiencia. Las vistas materializadas usan el ajuste inteligente para volver a escribir las consultas con transparencia en las tablas de origen para usar las vistas materializadas existentes y, así, mejorar el rendimiento y la eficiencia.

Cómo funciona el recomendador

El recomendador genera recomendaciones a diario para cada proyecto que ejecuta trabajos de consulta en BigQuery. Las recomendaciones se basan en el análisis de la ejecución de la carga de trabajo en los últimos 30 días. El recomendador de vistas materializadas busca patrones de consultas repetitivas y calcula los ahorros que se podrían realizar si la subconsulta repetitiva se puede mover a una vista materializada incremental. El recomendador tiene en cuenta cualquier ahorro en el momento de la consulta y el costo de mantenimiento de la cuenta para la vista materializada. Si estos factores combinados muestran un resultado positivo significativo, el recomendador hace una recomendación.

Considera el siguiente ejemplo de consulta:

WITH revenue   AS
(SELECT l_suppkey as supplier_no,
        sum(l_extendedprice * (1 - l_discount)) as total_revenue
  FROM lineitem
  WHERE
    l_shipdate >= date '1996-01-01'
    AND l_shipdate < date_add(date '1996-01-01', interval 3 MONTH)
  GROUP BY l_suppkey)
SELECT s_suppkey,
      s_name,
      s_address,
      s_phone,
      total_revenue
FROM
supplier,
revenue
WHERE s_suppkey = supplier_no
AND total_revenue =
  (SELECT max(total_revenue)
    FROM revenue)
ORDER BY s_suppkey

En este ejemplo de consulta, se muestra información sobre el proveedor principal. La consulta contiene una expresión de tabla común (CTE) llamada revenue que representa los ingresos totales por cada proveedor (l_suppkey). revenue se une a la tabla de proveedores con la condición de que el total_revenue del proveedor coincida con max(total_revenue) en todos los proveedores. Como resultado, la consulta calcula la información (l_suppkey, s_name, s_address, s_phone, total_revenue) sobre el proveedor con los ingresos totales máximos.

Toda la consulta en sí es demasiado complicada para ponerla en una vista materializada incremental. Sin embargo, la CTE supplier es una agregación en una sola tabla: un patrón de consulta compatible con vistas materializadas incrementales. La CTE supplier también es la parte más costosa en términos de procesamiento de la consulta. Por lo tanto, si la consulta de ejemplo se ejecutó de forma repetida en tablas de origen que cambian constantemente, el recomendador de vista materializada podría sugerir que se coloque la CTE de supplier en una vista materializada. La recomendación de vista materializada para la consulta de muestra anterior podría ser similar a la siguiente:

CREATE MATERIALIZED VIEW mv AS
SELECT l_suppkey as supplier_no,
         sum(l_extendedprice * (1 - l_discount)) as total_revenue
  FROM lineitem
  WHERE
    l_shipdate >= date '1996-01-01'
    AND l_shipdate < date_add(date '1996-01-01', interval 3 MONTH)
  GROUP BY l_suppkey

La API del recomendador también muestra información de ejecución de consultas en forma de estadísticas. Las estadísticas son hallazgos que te ayudan a comprender la carga de trabajo de tu proyecto y proporcionan más contexto sobre cómo una recomendación de vistas materializadas podría mejorar los costos de carga de trabajo.

Limitaciones

Antes de comenzar

Antes de ver o aplicar recomendaciones de vistas materializadas, debes habilitar la API del recomendador.

Permisos necesarios

Para obtener los permisos que necesitas para acceder a las recomendaciones de vistas materializadas, pídele a tu administrador que te otorgue el rol de Visualizador del recomendador de vistas materializadas de BigQuery (roles/recommender.bigqueryMaterializedViewViewer) de IAM. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

Este rol predefinido contiene los permisos necesarios para acceder a las recomendaciones de vistas materializadas. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para acceder a las recomendaciones de vistas materializadas:

  • recommender.bigqueryMaterializedViewRecommendations.get
  • recommender.bigqueryMaterializedViewRecommendations.list

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos

Para obtener más información sobre los roles y permisos de IAM en BigQuery, consulta Introducción a IAM.

Visualiza las recomendaciones de vistas materializadas

En esta sección, se describe cómo ver recomendaciones y estadísticas de vistas materializadas mediante la consola de Google Cloud, Google Cloud CLI o la API del recomendador.

Selecciona una de las siguientes opciones:

Console

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. Haz clic en Recomendaciones.

    Haz clic en Recomendaciones para ver todas las recomendaciones.

  3. Se abrirá el panel Recomendaciones de BigQuery. En Optimizar el costo de la carga de trabajo de BigQuery, haz clic en Ver detalles.

    Visualiza los detalles para ver todas las recomendaciones de BigQuery

  4. Aparece una lista de recomendaciones que muestra todas las recomendaciones generadas para el proyecto actual. Cada recomendación de esta lista muestra el ahorro aproximado si se aplicó la recomendación. Para ver más información sobre una recomendación de vista materializada o una estadística de tabla específica, haz clic en Detalles.

gcloud

Para ver las recomendaciones de vistas materializadas de un proyecto específico, usa el comando gcloud recommender recommendations list:

gcloud recommender recommendations list \
    --project=PROJECT_NAME \
    --location=REGION_NAME \
    --recommender=google.bigquery.materializedview.Recommender \
    --format=FORMAT_TYPE \

Reemplaza lo siguiente:

  • PROJECT_NAME: el nombre del proyecto que ejecuta trabajos de consulta
  • REGION_NAME: la región en la que se ejecutan los trabajos de consulta.
  • FORMAT_TYPE: un formato de salida de CLI de gcloud compatible; por ejemplo, JSON
En la siguiente tabla, se describen los campos importantes de la respuesta de las recomendaciones:

Propiedad Relevante para el subtipo Descripción
recommenderSubtype CREATE_MATERIALIZED_VIEW El tipo de recomendación.
content.overview.sql CREATE_MATERIALIZED_VIEW Declaración DDL sugerida que crea una vista materializada.
content.overview.slotMsSavedMonthly CREATE_MATERIALIZED_VIEW Milisegundos de ranura estimados que se guardarán mensualmente por la vista sugerida.
content.overview.bytesSavedMonthly CREATE_MATERIALIZED_VIEW Bytes estimados que se analizarán para guardarlos mensualmente por la vista sugerida.
content.overview.baseTables CREATE_MATERIALIZED_VIEW Se reserva para usarlo más adelante.

Para ver las estadísticas que solicitaron recomendaciones de vistas materializadas mediante la CLI de gcloud, usa el comando gcloud recommender insights list:

gcloud recommender insights list \
    --project=PROJECT_NAME \
    --location=REGION_NAME \
    --insight-type=google.bigquery.materializedview.Insight \
    --format=FORMAT_TYPE \

Reemplaza lo siguiente:

  • PROJECT_NAME: el nombre del proyecto que ejecuta trabajos de consulta
  • REGION_NAME: la región en la que se ejecutan los trabajos de consulta.
  • FORMAT_TYPE: un formato de salida de CLI de gcloud compatible; por ejemplo, JSON
En la siguiente tabla, se describen los campos importantes de la respuesta de la API de estadísticas:

Propiedad Relevante para el subtipo Descripción
content.queryCount CREATE_MATERIALIZED_VIEW Cantidad de consultas en el período de observación con patrón repetitivo que se puede optimizar mediante la vista materializada.

API de REST

Para ver las recomendaciones de vistas materializadas de un proyecto específico, usa la API de REST. Con cada comando, debes proporcionar un token de autenticación, que puedes obtener mediante la CLI de gcloud. Si deseas obtener más información sobre cómo obtener un token de autenticación, consulta Métodos para obtener un token de ID.

Puedes usar la solicitud curl list para ver todas las recomendaciones de un proyecto específico:

$ curl
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/PROJECT_NAME/locations/LOCATION/recommenders/google.bigquery.materializedview.Recommender/recommendations

Reemplaza lo siguiente:

  • PROJECT_NAME: el nombre del proyecto que contiene tu tabla de BigQuery
  • LOCATION: la ubicación en la que se encuentra el proyecto.
En la siguiente tabla, se describen los campos importantes de la respuesta de las recomendaciones:

Propiedad Relevante para el subtipo Descripción
recommenderSubtype CREATE_MATERIALIZED_VIEW El tipo de recomendación.
content.overview.sql CREATE_MATERIALIZED_VIEW Declaración DDL sugerida que crea una vista materializada.
content.overview.slotMsSavedMonthly CREATE_MATERIALIZED_VIEW Milisegundos de ranura estimados que se guardarán mensualmente por la vista sugerida.
content.overview.bytesSavedMonthly CREATE_MATERIALIZED_VIEW Bytes estimados que se analizarán para guardarlos mensualmente por la vista sugerida.
content.overview.baseTables CREATE_MATERIALIZED_VIEW Se reserva para usarlo más adelante.

Para ver las estadísticas que solicitaron recomendaciones de vistas materializadas mediante la API de REST, ejecuta el siguiente comando:

$ curl
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/PROJECT_NAME/locations/LOCATION/insightTypes/google.bigquery.materializedview.Insight/insights

Reemplaza lo siguiente:

  • PROJECT_NAME: el nombre del proyecto que contiene tu tabla de BigQuery
  • LOCATION: la ubicación en la que se encuentra el proyecto.
En la siguiente tabla, se describen los campos importantes de la respuesta de la API de estadísticas:

Propiedad Relevante para el subtipo Descripción
content.queryCount CREATE_MATERIALIZED_VIEW Cantidad de consultas en el período de observación con patrón repetitivo que se puede optimizar mediante la vista materializada.

Aplica recomendaciones de vistas materializadas

Puedes aplicar una recomendación para crear una vista materializada mediante la ejecución de la declaración DDL de tipo CREATE MATERIALIZED VIEW sugerida en la consola de Google Cloud.

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. Haz clic en Recomendaciones.

    Haz clic en Recomendaciones para ver todas las recomendaciones.

  3. Se abrirá el panel Recomendaciones de BigQuery. En Optimizar el costo de la carga de trabajo de BigQuery, haz clic en Ver detalles.

    Visualiza los detalles para ver todas las recomendaciones de BigQuery

  4. Aparece una lista de recomendaciones que muestra todas las recomendaciones generadas para el proyecto actual. Ubica una recomendación de vista materializada y haz clic en Detalles.

  5. Haz clic en Ver en BigQuery Studio. Se abrirá un editor de SQL que contiene una declaración DDL CREATE MATERIALIZED VIEW.

  6. En la declaración CREATE MATERIALIZED VIEW proporcionada, modifica el marcador de posición MATERIALIZED_VIEW con un nombre de vista materializada único.

  7. Ejecuta la declaración DDL CREATE MATERIALIZED VIEW para crear una vista materializada recomendada.

Soluciona problemas de recomendaciones

Problema: No aparecen recomendaciones para una tabla específica.

Es posible que las recomendaciones de vistas materializadas no aparezcan en las siguientes circunstancias:

  • No hay patrones de consulta recurrentes entre los trabajos de consulta que ejecuta un proyecto.
  • Los patrones de consultas recurrentes no cumplen con las limitaciones de las vistas materializadas incrementales y no se pueden colocar en una vista materializada adecuada para el ajuste inteligente.
  • La posible vista materializada tendría un costo de mantenimiento alto. Por ejemplo, las tablas de origen suelen modificarse mediante operaciones de lenguaje de manipulación de datos (DML) y, por lo tanto, una vista materializada se actualizará por completo, lo que generará más costos.
  • No hay una cantidad suficiente de consultas que tengan un patrón recurrente común.
  • El ahorro mensual estimado es demasiado insignificante (menos de 1 ranura).
  • Los trabajos de consulta que ejecuta el proyecto ya usan vistas materializadas.

Precios

No hay costo ni impactos adversos en el rendimiento de las cargas de trabajo cuando ves las recomendaciones.

Cuando aplicas recomendaciones mediante la creación de vistas materializadas, puedes generar costos de almacenamiento, mantenimiento y consulta. Para obtener más información, consulta Precios de vistas materializadas.