Introducción a la optimización del rendimiento de consultas
En este documento, se proporciona una descripción general de las técnicas de optimización que pueden mejorar el rendimiento de las consultas en BigQuery. En general, las consultas que hacen menos trabajo funcionan mejor. Se ejecutan más rápido y consumen menos recursos, lo que puede reducir los costos y disminuir las fallas.
Rendimiento de las consultas
La evaluación del rendimiento de las consultas en BigQuery implica varios factores:
- Datos de entrada y fuentes de datos (E/S): ¿cuántos bytes lee tu consulta?
- Comunicación entre nodos (redistribución): ¿cuántos bytes pasa tu consulta a la siguiente etapa? ¿Qué cantidad de bytes pasa a cada ranura?
- Procesamiento: ¿cuánto trabajo de CPU requiere tu consulta?
- Salidas (materialización): ¿cuántos bytes escribe tu consulta?
- Capacidad y simultaneidad: ¿Cuántas ranuras están disponibles y cuántas otras consultas se ejecutan al mismo tiempo?
- Patrones de consulta: ¿Tus consultas siguen las prácticas recomendadas de SQL?
Para evaluar consultas específicas o si tienes contención de recursos, puedes usar Cloud Monitoring o los gráficos de recursos administrativos de BigQuery para supervisar cómo tus trabajos de BigQuery consumen recursos con el tiempo. Si identificas una consulta lenta o con un alto uso de recursos, puedes enfocarte en las optimizaciones de rendimiento. Si identifica una consulta lenta o que consume muchos recursos, puede enfocar sus optimizaciones de rendimiento en esa consulta.
Algunos patrones de consulta, en especial los generados por herramientas de inteligencia empresarial, se pueden acelerar con BigQuery BI Engine. BI Engine es un servicio de análisis rápido en la memoria que acelera muchas consultas de SQL en BigQuery mediante el almacenamiento en caché inteligente de los datos que usas con más frecuencia. BI Engine está integrado en BigQuery, lo que significa que, a menudo, puedes obtener un mejor rendimiento sin modificar las consultas.
Al igual que con cualquier sistema, la optimización para lograr un buen rendimiento, en ocasiones, implica compensaciones. Por ejemplo, mediante la sintaxis avanzada de SQL, a veces se puede introducir la complejidad y reducir la comprensibilidad de las consultas para personas que no son expertos en SQL. Dedicar tiempo a microoptimizaciones para cargas de trabajo no críticas también podría implicar que los recursos dejen de crear características nuevas para tus aplicaciones o de identificar optimizaciones más importantes. A fin de ayudarte a lograr el mayor retorno de inversión posible, recomendamos que enfoques tus optimizaciones en las cargas de trabajo más importantes para tus canalizaciones de análisis de datos.
Optimiza la capacidad y la simultaneidad
BigQuery ofrece dos modelos de precios para consultas: precios según demanda y basados en la capacidad. El modelo según demanda proporciona un grupo compartido de capacidad y los precios se basan en la cantidad de datos que procesa cada consulta que ejecutas.
Se recomienda el modelo basado en capacidad si deseas presupuestar un gasto mensual coherente o si necesitas más capacidad de la que está disponible con el modelo según demanda. Cuando utiliza precios basados en la capacidad, asigna capacidad de procesamiento de consultas dedicada que se mide en ranuras. El costo de todos los bytes procesados se incluye en el precio basado en la capacidad. Además de los compromisos de ranuras fijos, puedes usar ranuras de ajuste de escala automático, que proporcionan capacidad dinámica según la carga de trabajo de la consulta.
El rendimiento de las consultas que se ejecutan de manera repetida en los mismos datos puede variar, y la variación suele ser mayor para las consultas que usan ranuras a pedido que para las que usan reservas de ranuras.
Durante el procesamiento de consultas de SQL, BigQuery desglosa la capacidad de procesamiento requerida para realizar cada etapa de una consulta en ranuras. BigQuery según demanda: cantidad de ranuras disponibles en el proyecto
- Modelo basado en la capacidad: cantidad de ranuras disponibles en la reserva
- Las consultas que requieren más ranuras de las que están disponibles se ponen en cola hasta que los recursos de procesamiento estén disponibles.
Las consultas que requieren más ranuras de las que están disponibles se ponen en cola hasta que los recursos de procesamiento estén disponibles. Después de que una consulta comienza a ejecutarse, BigQuery calcula cuántas ranuras usa cada etapa de consulta según el tamaño y la complejidad de la etapa y la cantidad de ranuras disponibles. BigQuery utiliza una técnica llamada programación equitativa para garantizar que cada consulta tenga suficiente capacidad para progresar.
Sin embargo, un grupo más grande de ranuras puede mejorar el rendimiento de consultas grandes o complejas, además del rendimiento de las cargas de trabajo simultáneas. Para mejorar el rendimiento de las consultas, puedes modificar tus reservas de ranuras o establecer un límite más alto para el ajuste de escala automático de ranuras. Para mejorar el rendimiento de las consultas, puedes modificar tus reservas de ranuras o establecer un límite superior para la escalabilidad automática de ranuras. También puede utilizar Gemini Cloud Assist para gestionar sus reservas y capacidad con indicaciones de lenguaje natural.
BigQuery genera un plan de consulta cada vez que ejecutas una consulta.
BigQuery genera un plan de consulta cada vez que ejecutas una consulta. El plan de consulta muestra estadísticas de ejecución, como bytes leídos y tiempo de ranura consumido. El plan de consulta muestra estadísticas de ejecución, como bytes leídos y tiempo de ranura consumido. El gráfico de ejecución de consultas proporciona una interfaz gráfica para ver el plan de consulta y diagnosticar problemas de rendimiento de las consultas. El gráfico de ejecución de consultas proporciona una interfaz gráfica para ver el plan de consulta y diagnosticar problemas de rendimiento de las consultas.
También puedes usar el método de API jobs.get
o la vista INFORMATION_SCHEMA.JOBS
para recuperar el plan de consulta y la información de la línea de tiempo. Esta información es utilizada por
BigQuery Visualizer,
una herramienta de código abierto que representa visualmente el flujo de las etapas de ejecución en un
trabajo de BigQuery.
Cuando BigQuery ejecuta un trabajo de consulta, convierte la instrucción de SQL declarativa en un grafo de ejecución. Este grafo se divide en una serie de etapas de consulta, que se componen de conjuntos de pasos de ejecución más detallados. BigQuery usa una arquitectura en paralelo muy distribuida para ejecutar estas consultas. Las etapas de BigQuery modelan las unidades de trabajo que varios trabajadores potenciales pueden ejecutar en paralelo. Para estimar qué tan costosa es una consulta en términos de procesamiento, puedes ver la cantidad total de segundos de ranura que consume.
Cuanto menor sea el número de segundos de ranura, mejor, ya que esto significa que existen más recursos disponibles para otras consultas en ejecución en el mismo proyecto, al mismo tiempo. El gráfico de ejecución de consultas puede ayudarte a comprender cómo BigQuery ejecuta las consultas y si determinadas etapas dominan el uso de recursos.
Por ejemplo, una etapa `JOIN` que genera muchas más filas de salida que filas de entrada podría indicar una oportunidad para aplicar un filtro con anticipación en la consulta. Por ejemplo, una etapa JOIN que genera muchas más filas de salida que
filas de entrada podría indicar una oportunidad para filtrar antes en la consulta.
Sin embargo, la naturaleza administrada del servicio limita la practicidad directa de algunos detalles. Si deseas conocer prácticas recomendadas y técnicas para mejorar la ejecución y el rendimiento de las consultas, visita Optimiza el procesamiento de consultas.
¿Qué sigue?
- Obtén información sobre cómo solucionar problemas de ejecución de consultas con los registros de auditoría de BigQuery.
- Aprende otras técnicas de control de costos para BigQuery.
- Aprende a supervisar el uso de BigQuery mediante los informes de tablas del sistema de BigQuery.
INFORMATION_SCHEMA.JOBS - Aprende a supervisar el uso de BigQuery mediante los informes de tablas del sistema de BigQuery.