Mejores prácticas para optimizar las consultas de Snowflake

Optimizar las consultas de Snowflake es fundamental para mejorar el rendimiento y reducir los tiempos de respuesta. En este artículo, encontrarás algunas prácticas recomendadas para lograr un rendimiento óptimo.

1. Elije el tamaño adecuado del almacén

  • Comienza con un almacén X-SMALL y amplíalo solo según sea necesario.

  • Evita el aprovisionamiento excesivo para reducir los costos de procesamiento.

  • Supervisa el rendimiento de las consultas y ajústalo según la carga de trabajo.

2. Utiliza el almacenamiento en caché integrado de Snowflake

Snowflake utiliza tres capas de almacenamiento en caché para reducir el tiempo de cálculo:

  • Caché de resultados: Almacena los resultados de las consultas durante 24 horas. Ideal para consultas repetidas.

  • Caché de disco local: almacena en caché datos a los que se accede con frecuencia en el almacén.

  • Caché de disco remoto: comparte la caché entre almacenes para mantener la coherencia.

Ejemplo
Ejecuta una consulta como:

SELECT COUNT(*) FROM SALES WHERE REGION = 'US';

Si ejecutas la misma consulta nuevamente dentro de 24 horas sin ninguna actualización de tabla, Snowflake utilizará el caché de resultados y devolverá el resultado instantáneamente con un costo computacional cero.

El uso adecuado del almacenamiento en caché puede mejorar drásticamente el rendimiento y reducir los costos.

3. Aprovecha las vistas materializadas (Materialized Views)

  • Utiliza vistas materializadas para consultas complejas que se ejecutan con frecuencia (uniones, agregaciones).

  • Almacenan resultados precalculados y reducen el tiempo de ejecución.

  • Es mejor cuando los datos subyacentes cambian con poca frecuencia.

Ejemplo:
Con frecuencia ejecutas:

SELECT PRODUCT_ID, SUM(SALES) 
FROM SALES
GROUP BY PRODUCT_ID;

En lugar de calcular esto cada vez, crea una vista materializada:

CREATE MATERIALIZED VIEW MV_PRODUCT_SALES AS
SELECT PRODUCT_ID, SUM(SALES) AS TOTAL_SALES
FROM SALES
GROUP BY PRODUCT_ID;

Ahora las consultas MV_PRODUCT_SALESson mucho más rápidas y utilizan resultados precalculados.

4. Aplicar claves de agrupamiento (clustering keys) para tablas grandes

  • La agrupación en clústeres organiza los datos para una poda más eficiente.

  • Mejora el rendimiento de las consultas que filtran en columnas agrupadas.

  • Ideal para tablas grandes y frecuentemente consultadas.

Ejemplo

Su tabla ORDERS a menudo se filtra por ORDER_DATE:

SELECT * FROM ORDERS WHERE ORDER_DATE >= '2024-01-01';

Defina una clave de agrupamiento para mejorar la poda:

ALTER TABLE ORDERS CLUSTER BY (ORDER_DATE);

Esto ayuda a que Snowflake escanee solo las microparticiones relevantes, acelerando los escaneos grandes.

5. Habilitar el Servicio de Aceleración de Consultas (QAS)

  • Snowflake asigna automáticamente capacidad computacional adicional para consultas grandes.

  • Mejora el rendimiento sin escalado manual.

  • Se cobra únicamente por los recursos adicionales utilizados.

Ejemplo:

Para una consulta de agregación grande:

SELECT REGION, AVG(REVENUE) FROM SALES_DATA GROUP BY REGION;

Habilite QAS en su almacén:

ALTER WAREHOUSE my_warehouse SET QUERY_ACCELERATION = TRUE;

Snowflake escalará dinámicamente el cómputo para consultas complejas, mejorando la velocidad sin cambiar el tamaño del almacén.

6. Activar el servicio de optimización de búsqueda (si corresponde)

  • Optimiza las consultas de búsqueda puntual (por ejemplo, WHERE id = '123') en conjuntos de datos grandes.

  • Mantiene metadatos adicionales para acelerar el acceso a nivel de fila.

  • Útil para tablas transaccionales grandes con alta demanda de búsqueda.

Ejemplo

A menudo ejecutas:

SELECT * FROM USERS WHERE USER_ID = 'abc123';

Si USERSes una tabla grande, habilita la optimización de búsqueda:

ALTER TABLE USERS SET SEARCH_OPTIMIZATION = ON;

Esto mantiene los metadatos para búsquedas rápidas en USER_ID, lo que reduce significativamente la latencia de la consulta.

7. Supervisión y solución de problemas con las herramientas de Snowflake

La monitorización es clave para la optimización continua. A continuación, te explicamos cómo usar eficazmente las herramientas integradas de Snowflake:

  • Historial de consultas: realiza un seguimiento del rendimiento e identifica consultas lentas.

    • Ve a la pestaña "History" en la interfaz de usuario de Snowflake.

    • Utiliza filtros para buscar por usuario, rango de tiempo, almacén o ID de consulta.

    • Verifica columnas como Execution Time, Bytes Scanned y Status para identificar consultas lentas o fallidas.

    • Haz clic en cualquier consulta para ver estadísticas de ejecución detalladas o para abrir el Perfil de consulta.

  • Perfil de consulta (Query Profile): visualiza la ejecución de consultas y detecta cuellos de botella.

    1. Abre una consulta completada desde la vista "History".

    2. Haz clic en “Perfil” para visualizar el plan de ejecución.

    3. Buscar:

      • Etapas con alto tiempo de ejecución

      • Pasos con gran volumen de datos

      • Operadores marcados en rojo que indican cuellos de botella.

    Utiliza esta información para identificar uniones ineficientes, podas faltantes o transformaciones que requieren un gran esfuerzo computacional.

  • Vistas de uso de la cuenta: analiza los patrones de uso y la actividad del almacén.

    1. Ejecuta consultas sobre las vistas del esquema SNOWFLAKE.ACCOUNT_USAGEo en INFORMATION_SCHEMA.

    2. Vistas recomendadas: 

    • QUERY_HISTORY– Detalles sobre todas las consultas ejecutadas.

    • WAREHOUSE_LOAD_HISTORY– Uso de CPU/memoria a lo largo del tiempo.

    • TABLE_STORAGE_METRICS– Tamaño de almacenamiento y detalles de partición.

    3. Estas vistas te permiten monitorizar la actividad de los almacenes, identificar picos de uso y detectar posibles excesos de capacidad.

Siguiendo estas prácticas recomendadas, podrás optimizar significativamente sus consultas de Snowflake, garantizando tiempos de respuesta más rápidos y un procesamiento de datos más eficiente. Revisa y ajusta periódicamente sus estrategias en función de las métricas de rendimiento de las consultas para mantener un rendimiento óptimo con Dataslayer.

Como siempre, contáctanos a través del chat en vivo en nuestro sitio web o por correo electrónico si aún tienes dudas o preguntas. ¡Estaremos encantados de ayudarte!