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
- El recomendador de vistas materializadas no admite el proceso estándar para inhabilitar el procesamiento de datos. Para dejar de recibir recomendaciones de vistas materializadas, sigue las instrucciones del formulario de registro en la fase previa a la DG de Gemini en BigQuery.
- Las recomendaciones de vistas materializadas no se pueden exportar a BigQuery.
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 a proyectos, carpetas y organizaciones.
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
En la consola de Google Cloud, ve a la página de BigQuery.
Haz clic en
Recomendaciones.Se abrirá el panel Recomendaciones de BigQuery. En Optimizar el costo de la carga de trabajo de BigQuery, haz clic en Ver detalles.
Aparece una lista de recomendaciones que muestra todas las recomendaciones generadas para el proyecto actual. 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.
Como alternativa, puedes ver todas las recomendaciones disponibles para tu organización o proyecto si haces clic en Recomendaciones en la barra de navegación lateral.
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 consultaREGION_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
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 obtener más información sobre otros campos de la respuesta de
recommendations
, consulta REST Resource:projects.locations.recommenders.recommendation
. - Para obtener más información sobre la API del recomendador, consulta Usa la API: Recomendaciones.
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 consultaREGION_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
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. |
- Para obtener más información sobre otros campos de la respuesta de las estadísticas, consulta Recurso de REST:
projects.locations.insightTypes.insights
. - Para obtener más información sobre el uso de estadísticas, consulta Usa la API: Estadísticas.
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 BigQueryLOCATION
: la ubicación en la que se encuentra el proyecto.
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 obtener más información sobre otros campos de la respuesta de
recommendations
, consulta REST Resource:projects.locations.recommenders.recommendation
. - Para obtener más información sobre la API del recomendador, consulta Usa la API: Recomendaciones.
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 BigQueryLOCATION
: la ubicación en la que se encuentra el proyecto.
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. |
- Para obtener más información sobre otros campos de la respuesta de las estadísticas, consulta Recurso de REST:
projects.locations.insightTypes.insights
. - Para obtener más información sobre el uso de estadísticas, consulta Usa la API: Estadísticas.
Visualiza recomendaciones con INFORMATION_SCHEMA
También puedes ver tus recomendaciones y estadísticas con las vistas de INFORMATION_SCHEMA
. Por ejemplo, puedes usar la vista INFORMATION_SCHEMA.RECOMMENDATIONS
para ver tus tres recomendaciones principales en función de los ahorros en los espacios, como se muestra en el siguiente ejemplo:
+---------------------------------------------------+--------------------------------------------------------------------------------------------------+ | recommender | target_resources | est_gb_saved_monthly | slot_hours_saved_monthly | last_updated_time +---------------------------------------------------+--------------------------------------------------------------------------------------------------+ | google.bigquery.materializedview.Recommender | ["project_resource"] | 140805.38289248943 | 9613.139166666666 | 2024-07-01 13:00:00 | google.bigquery.table.PartitionClusterRecommender | ["table_resource_1"] | 4393.7416711859405 | 56.61476777777777 | 2024-07-01 13:00:00 | google.bigquery.table.PartitionClusterRecommender | ["table_resource_2"] | 3934.07264107652 | 10.499466666666667 | 2024-07-01 13:00:00 +---------------------------------------------------+--------------------------------------------------------------------------------------------------+
Para obtener más información, consulta los siguientes recursos:
- Vista
INFORMATION_SCHEMA.RECOMMENDATIONS
- Vista
INFORMATION_SCHEMA.RECOMMENDATIONS_BY_ORGANIZATION
- Vista
INFORMATION_SCHEMA.INSIGHTS
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.
En la consola de Google Cloud, ve a la página de BigQuery.
Haz clic en
Recomendaciones.Se abrirá el panel Recomendaciones de BigQuery. En Optimizar el costo de la carga de trabajo de BigQuery, haz clic en Ver detalles.
Aparece una lista de recomendaciones que muestra todas las recomendaciones generadas para la organización o el proyecto actual, según el permiso seleccionado. Ubica una recomendación de vista materializada y haz clic en Detalles.
Haz clic en Ver en BigQuery Studio. Se abrirá un editor de SQL que contiene una declaración DDL
CREATE MATERIALIZED VIEW
.En la declaración
CREATE MATERIALIZED VIEW
proporcionada, modifica el marcador de posiciónMATERIALIZED_VIEW
con un nombre de vista materializada único.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.