Administra recomendaciones de vistas materializadas

En este documento, se describe cómo funciona el recomendador de vistas materializadas y, también, 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 la carga de trabajo y a ahorrar costos. 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 consulta repetitivos y calcula los ahorros que se podrían realizar si la subconsulta repetitiva se pudiera mover a una vista materializada incremental. El recomendador tiene en cuenta los ahorros en el tiempo de consulta y los costos de mantenimiento de la cuenta de 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 en 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 el ingreso total máximo.

Toda la consulta en sí es demasiado complicada para colocarla 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 las vistas materializadas incrementales. La CTE de 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 las tablas de origen que cambian constantemente, el recomendador de vistas materializadas puede sugerir colocar la CTE supplier en una vista materializada. La recomendación de la vista materializada para la consulta de muestra anterior podría ser similar a la que se muestra a continuación:

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 la 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 vista materializada podría mejorar los costos de carga de trabajo.

Limitaciones

Antes de comenzar

Antes de ver o aplicar las 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 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ó. Para ver más información sobre una recomendación de vista materializada o una estadística de tabla específicas, 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 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 con la vista sugerida.
content.overview.bytesSavedMonthly CREATE_MATERIALIZED_VIEW Bytes estimados que se analizarán por mes según 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 pueden optimizar mediante vistas materializadas.

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 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 con la vista sugerida.
content.overview.bytesSavedMonthly CREATE_MATERIALIZED_VIEW Bytes estimados que se analizarán por mes según 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 pueden optimizar mediante vistas materializadas.

Aplica recomendaciones de vistas materializadas

Puedes aplicar una recomendación para crear una vista materializada si ejecutas 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 abre un editor de SQL que contiene una instrucción CREATE MATERIALIZED VIEW de DDL.

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

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

Soluciona problemas relacionados con las 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 se encontraron patrones de consulta recurrentes entre los trabajos de consulta que ejecuta un proyecto.
  • Los patrones de consulta recurrentes no satisfacen 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 a menudo se modifican mediante operaciones de lenguaje de manipulación de datos (DML) y, por lo tanto, una vista materializada se someterá a una actualización completa, lo que generaría más costos.
  • No hay una cantidad suficiente de consultas que tienen 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.