10 mejores prácticas para optimizar los recursos en Snowflake

Sep 9, 2022 | Snowflake

This story is a condensed version of one produced Inviso by Devoteam.

La plataforma Snowflake es arquitectónicamente diferente de la mayoría de los sistemas de bases de datos tradicionales y almacenes de datos en la nube. Esta herramienta tiene dos plataformas informáticas y de almacenamiento separadas, las cuales son muy elásticas. Para mantener su buen rendimiento y optimizar el uso de recursos de esta herramienta, te compartimos algunas buenas prácticas que te ayudarán.

La elasticidad de Snowflake y su gestión

Con Snowflake, ya no tienes que preocuparte por realizar una planificación avanzada de recursos, determinar cronogramas de cargas de trabajo o evitar que se introduzcan nuevas cargas de trabajo en el sistema por miedo a las limitaciones del disco o de la CPU. Como plataforma de datos en la nube, snowflake puede escalar rápidamente para satisfacer tanto el crecimiento planificado como el inesperado. Esto significa que en lugar de pagar por una cantidad fija y limitada de almacenamiento y computación, la cantidad de almacenamiento y computación crece y se reduce a medida que sus necesidades cambian con el tiempo.

Aprovechando un principio básico de la nube, que es la elasticidad, el cómputo se puede escalar dinámicamente para satisfacer la demanda a medida que las necesidades de simultaneidad o la potencia de cómputo bruta fluctúan a lo largo del día. Los requisitos de almacenamiento variarán con el tiempo para bases de datos, tablas y metadatos. Por lo tanto, todos los administradores de cuentas de Snowflake deben realizar algunas optimizaciones en su huella de cómputo, así como considerar métodos más avanzados a medida que crece su huella de cómputo. Teniendo en cuenta que el cómputo y el almacenamiento ahora son independientes y elásticos, se debe monitorear el consumo, el crecimiento inesperado y la eficiencia de los recursos.

Las cuentas de Snowflake son prácticamente ilimitadas de forma predeterminada. Los administradores de cuentas pueden implementar restricciones menores para defenderse de usuarios deshonestos o uso subóptimo de recursos y créditos. Por ejemplo, pueden controlar de forma proactiva la computación con respecto al almacén virtual individual, el usuario o la cuenta y organización a través de monitores de recursos. Los usuarios, las bases de datos, las tablas, las consultas y las cargas de trabajo se pueden monitorear a través del esquema ACCOUNT_USAGE. Que comparten todas las cuentas de Snowflake. 

Teniendo en cuenta todo esto, aquí hay 10 mejores prácticas que los administradores de cuentas de Snowflake deberían seguir.

Buenas prácticas para optimizar los recursos en tu nube

1. Habilita la suspensión automática

Asegúrate de que todos los almacenes virtuales estén configurados para suspender automáticamente. De esta manera, cuando terminen de procesar las consultas, se detendrá el consumo de crédito.

2. Habilita la reanudación automática

Configura tus almacenes virtuales en Snowflake para que se reanuden automáticamente. Si vas a implementar la suspensión automática y establecer límites de tiempo de espera adecuados, es imprescindible habilitar la reanudación automática; de lo contrario, los usuarios no podrán acceder al sistema. 

3. Establece tiempos de espera adecuados para las cargas de trabajo

Todos los almacenes virtuales deben tener un tiempo de espera adecuado.

  • Para tareas, carga de datos y almacenes ETL/ELT, establece el tiempo de espera para la suspensión inmediatamente después de la finalización.
  • Dirigido a los almacenes de consultas BI y SELECT, establece el tiempo de espera de suspensión en 10 minutos en la mayoría de las situaciones para mantener las memorias caché de datos calientes para el acceso frecuente de los usuarios finales.
  • Para DevOps, DataOps y almacenes de ciencia de datos, establece el tiempo de espera de suspensión en 5 minutos porque tener una caché activa no es tan importante para consultas ad hoc y altamente únicas.

4. Establece tiempos de espera para los extractos de cuenta

Utiliza los parámetros STATEMENT_QUEUED_TIMEOUT_IN_SECONDS y STATEMENT_TIMEOUT_IN_SECONDS para detener automáticamente las consultas que tardan demasiado en ejecutarse. Ya sea debido a un error del usuario o a un clúster congelado. Personaliza las declaraciones de nivel de tiempo de espera de almacén, cuenta, sesión y usuario de acuerdo con tu estrategia de datos para consultas de ejecución prolongada.

5.  Monitorea los almacenes que se están acercando al umbral de facturación del servicio en la nube

En general, para una cuenta y fuera de las funciones sin servidor, Snowflake cobrará por los servicios en la nube; solo si superan el 10 % del consumo diario de crédito del almacén virtual. Las tareas de servicios en la nube son útiles para operaciones de metadatos. Como consultas de descubrimiento de herramientas de BI, comandos SHOW, uso de caché y servidor, entre otras funciones de optimización de servicios. Por lo tanto, si usas 100 créditos de cómputo en un día. Pero usas 15 créditos adicionales para servicios en la nube, se te cobrarán 5 créditos adicionales por pasar del 10 % permitido. Esto significa que se facturará un total de 105 créditos por día proporcionando 10 créditos gratuitos de empleo de servicios en la nube.

7. Descarta tablas no utilizadas

Es posible que tengas tablas sin utilizar que sean candidatas a descartar. Solo asegúrese de que nadie esté consultando estas tablas. De hecho, es posible que desees que sea obligatorio verificar todas las tablas antes de eliminarlas. Esto es específico del contexto de la base de datos, así que asegúrate de mirar las tablas en tus bases de datos. Además, ten en cuenta las tablas que se emplean solo en los DDL de vista. 

8. purgar usuarios inactivos

Es una buena idea eliminar de tu cuenta a los usuarios inactivos o los usuarios que nunca iniciaron sesión en Snowflake. De manera reactiva, los administradores pueden monitorear usuarios, bases de datos, tablas, consultas y cargas de trabajo a través del esquema ACCOUNT_USAGE compartido con todas las cuentas. Estos datos se usan comúnmente para pronosticar tendencias de uso y proporcionar facturación de devolución y contracargo para departamentos, equipos y cargas de trabajo.  Las métricas de empleo diario están integradas en la plataforma para usuarios individuales, administradores de cuentas y administradores de organizaciones.

9. Busca almacenes que no tengan monitores de recursos

Los monitores de recursos son una excelente manera de controlar de manera proactiva los presupuestos de carga de trabajo y evitar picos de recursos inesperados. Pueden ayudar a monitorear tanto el uso del usuario como el uso de la cuenta de servicio en Snowflake. Primero, debes tener almacenes virtuales dedicados para cada una de las cargas de trabajo, ELT, BI, informes y ciencia de datos, así como para otras cargas de trabajo. Las cuentas y los almacenes pueden tener cuotas de crédito totales, anuales, mensuales, semanales y diarias.

10. Aplicar monitores de recursos

Puedes usar la interfaz de usuario o SQL para aplicar una política de supervisión de recursos. Según la configuración de preferencia de la cuenta, los monitores de recursos pueden notificar cuando el consumo alcanza un umbral más bajo. Luego suspender el almacén o la cuenta en un umbral más alto.

Con el modelo altamente elástico de computación y facturación por segundo de Snowflake, los administradores de cuentas deben monitorear el uso, el crecimiento y la eficiencia de los recursos de manera continua. Para asegurarse de que cumplan con los requisitos de rendimiento y los presupuestos. Si bien Snowflake puede ayudar a optimizar los recursos de forma automática, existen oportunidades para que los administradores de cuentas ajusten aún más su implementación, especialmente a medida que crece su huella informática. Recomendamos estas mejores prácticas básicas para monitorear y optimizar los recursos para evitar errores comunes que son fáciles de pasar por alto. ¡Conoce más sobre esta herramienta y su implementación!