10 bonnes pratiques pour optimiser les ressources

10 bonnes pratiques pour optimiser les ressources


Comme nous l’avons couvert dans partie 1 de cette série de blogs, la plate-forme de Snowflake est architecturalement différente de presque tous les systèmes de base de données traditionnels et entrepôt de données en nuage. Snowflake a un calcul et un stockage complètement séparés, et les deux niveaux de la plate-forme sont presque instantanément élastiques. La nécessité de faire une planification avancée des ressources, de s’acharner sur les calendriers de charge de travail et d’empêcher de nouvelles charges de travail sur le système en raison de la peur des limitations de disque et de processeur disparaît tout simplement avec Snowflake. En tant que plate-forme de données cloud, Snowflake peut évoluer presque instantanément pour répondre à une croissance planifiée, ad hoc ou surprise. Cela signifie qu’au lieu de payer pour une quantité fixe et limitée de stockage et de calcul, la quantité de stockage et de calcul augmente et diminue à mesure que vos besoins évoluent au fil du temps.

En tirant parti d’un principe fondamental du cloud, l’élasticité et le calcul peuvent être adaptés de manière dynamique aux charges de travail tout au long de la journée, car les besoins de simultanéité ou la puissance de calcul brute fluctuent pour répondre à la demande. Le stockage augmentera et diminuera au fil du temps pour les bases de données, les tables et les métadonnées. Il y a quelques optimisations que chaque administrateur de compte Snowflake devrait faire et certaines méthodes plus avancées qu’ils devraient considérer à mesure que leur empreinte de calcul Snowflake augmente. Étant donné que le calcul et le stockage sont séparés et qu’ils sont élastiques, ces ressources doivent être surveillées pour la consommation, la croissance surprise et l’efficacité des ressources.

Snowflake est pratiquement illimité par défaut, et les administrateurs de compte peuvent mettre en place des restrictions mineures au niveau du compte et au niveau des ressources pour se défendre contre les utilisateurs malveillants ou une utilisation sous-optimale des ressources et des crédits. Par exemple, ils peuvent contrôler de manière proactive le calcul au niveau de l’entrepôt virtuel individuel, au niveau de l’utilisateur ou au niveau du compte et de l’organisation via moniteurs de ressources. Les utilisateurs, les bases de données, les tables, les requêtes et les charges de travail peuvent être surveillés via le ACCOUNT_USAGE schéma partagé avec tous les comptes Snowflake. La figure suivante montre l’état et la configuration de base des entrepôts virtuels dans un compte :

gestion des entrepôts

Compte tenu de tout cela, voici 10 bonnes pratiques que les administrateurs de compte Snowflake devraient suivre.

Meilleure pratique n° 1 : Activer la suspension automatique

Assurez-vous que tous les entrepôts virtuels sont configurés pour s’arrêter automatiquement. De cette façon, lorsqu’ils ont fini de traiter les requêtes, la suspension automatique éteindra vos entrepôts virtuels lorsqu’ils auront fini de traiter les requêtes, et arrêtera ainsi la consommation de crédit. Exécutez la requête suivante pour identifier tous les entrepôts virtuels pour lesquels la suspension automatique n’est pas activée :

Meilleure pratique n° 2 : Activer la reprise automatique

Assurez-vous que tous les entrepôts virtuels sont configurés pour reprendre automatiquement. Si vous envisagez d’implémenter la suspension automatique et de définir des délais d’expiration appropriés, l’activation de la reprise automatique est indispensable ; sinon, les utilisateurs ne pourront pas interroger le système. Exécutez ce qui suit pour identifier tous les entrepôts virtuels qui ne reprendront pas automatiquement lorsqu’ils seront interrogés :

Meilleure pratique n° 3 : définir des délais d’expiration appropriés pour les charges de travail

Tous les entrepôts virtuels doivent avoir un délai d’expiration approprié pour leur charge de travail particulière :

  • Pour les tâches, le chargement des données et les entrepôts ETL/ELT, définissez le délai d’expiration de la suspension immédiatement après l’achèvement.
  • Pour les entrepôts de requêtes BI et SELECT, définissez le délai de suspension sur 10 minutes dans la plupart des situations afin de maintenir les caches de données au chaud pour un accès fréquent par les utilisateurs finaux.
  • Pour DevOps, DataOps et les entrepôts de science des données, définissez le délai de suspension sur 5 minutes, car disposer d’un cache à chaud n’est pas aussi important pour les requêtes ad hoc et hautement uniques.

Voici un exemple de configuration :

Meilleure pratique n° 4 : définir des délais d’expiration des relevés de compte

Utilisez le STATEMENT_QUEUED_TIMEOUT_IN_SECONDS et STATEMENT_TIMEOUT_IN_SECONDS paramètres pour arrêter automatiquement les requêtes qui prennent trop de temps à s’exécuter, soit en raison d’une erreur de l’utilisateur, soit d’un cluster gelé. Personnalisez les instructions de niveau d’expiration de l’entrepôt, du compte, de la session et de l’utilisateur en fonction de votre stratégie de données pour les requêtes de longue durée.

Voici un exemple :

ALTER WAREHOUSE LOAD_WH SET STATEMENT_TIMEOUT_IN_SECONDS= 3600;rnSHOW PARAMETERS IN WAREHOUSE LOAD_WH;

Meilleure pratique n° 5 : Identifiez les entrepôts qui s’écartent de la moyenne sur sept jours

Voici un conseil pratique qui découle d’une interaction directe que j’ai eue avec un client qui a défini un entrepôt à une taille plus grande pour effectuer une tâche mais ne l’a pas remis comme il l’a trouvé. J’ai fait la requête suivante pour qu’il coure tous les matins pour identifier l’utilisation du crédit d’entrepôt qui s’écarte de la moyenne sur sept jours. La figure suivante montre les résultats de l’exécution de la requête.

Identifier les entrepôts qui s'écartent de la moyenne sur sept jours

Meilleure pratique n° 6 : Surveiller les entrepôts qui approchent du seuil de facturation du service cloud

La requête suivante examine les entrepôts où les coûts des services cloud représentent un pourcentage élevé de la charge de travail. Dans l’ensemble, pour un compte (et en dehors des fonctionnalités sans serveur), Snowflake ne facturera les services cloud que s’ils dépassent 10 % de la consommation quotidienne de crédit de l’entrepôt virtuel. Les tâches de services cloud sont utiles pour les opérations de métadonnées telles que les requêtes de découverte d’outils BI, les requêtes de pulsation, les commandes SHOW, l’utilisation du cache et plusieurs autres fonctionnalités d’optimisation de service. Ainsi, si vous utilisez 100 crédits de calcul en une journée, mais que vous utilisez 15 crédits supplémentaires pour les services cloud (peu probable), vous serez facturé 5 crédits supplémentaires pour ce jour-là pour les 5 crédits de service cloud qui dépassaient l’allocation de 10 %. Cela signifie que 105 crédits au total seraient facturés pour la journée, Snowflake fournissant 10 crédits gratuits d’utilisation des services cloud. Cette requête vous aide à déterminer quels entrepôts approchent ou dépassent ce seuil de 10 % afin que vous puissiez enquêter.

Meilleure pratique n° 7 : supprimez les tables inutilisées

Vous pouvez avoir des tables inutilisées susceptibles d’être supprimées. Assurez-vous simplement que personne n’interroge ces tables. En fait, vous voudrez peut-être rendre obligatoire la vérification de toutes les tables avant la suppression. (Si vous avez configuré Time Travel, vous pouvez annuler la suppression d’une table si vous faites une erreur.) Ceci est spécifique au contexte de la base de données, alors assurez-vous de consulter les tables de vos bases de données. Tenez également compte des tables utilisées uniquement dans les DDL de vue. Voici un exemple de requête :

Meilleure pratique n° 8 : purger les utilisateurs dormants

C’est une bonne idée de purger de votre compte les utilisateurs inactifs ou les utilisateurs qui ne se sont jamais connectés à Snowflake. Voici un exemple qui génère une liste des deux types d’utilisateurs :

Garde-corps pour mise à l’échelle automatique

L’utilisation réelle d’une plate-forme de données varie considérablement d’une heure à l’autre, d’un jour à l’autre et d’un mois à l’autre. Par défaut, Snowflake est conçu pour évoluer automatiquement et fournir des performances et une efficacité maximales. Cependant, certaines charges de travail sont mieux servies par des ressources statiques et hautement prévisibles, et Snowflake peut facilement être configuré pour fournir ce modèle de consommation cohérent pour chaque jour de l’année. En mettant en œuvre quelques restrictions au niveau du compte et au niveau des ressources, les administrateurs de compte peuvent empêcher une utilisation inattendue par des utilisateurs négligents ou des profils de mise à l’échelle sous-optimaux :

  • À travers moniteurs de ressourcesles administrateurs peuvent recevoir des alertes proactives et contrôler le calcul au niveau du compte, de l’entrepôt virtuel et même au niveau de l’utilisateur.
  • De manière réactive, les administrateurs peuvent surveiller les utilisateurs, les bases de données, les tables, les requêtes et les charges de travail via le schéma ACCOUNT_USAGE partagé avec tous les comptes Snowflake. Ces données sont couramment utilisées pour prévoir les tendances d’utilisation et fournir une rétrofacturation et une facturation rétrofacturée pour les services, les équipes et les charges de travail. Des mesures d’utilisation quotidienne sont intégrées à la plate-forme pour les utilisateurs individuels, les administrateurs de compte et les administrateurs d’organisation. Cette figure montre le tableau de bord intégré fournissant une répartition horaire des crédits pour les services de calcul et cloud :
tableau de bord intégré fournissant une répartition horaire des crédits

Meilleure pratique n° 9 : trouver des entrepôts qui n’ont pas de moniteurs de ressources

Les moniteurs de ressources sont un excellent moyen de contrôler de manière proactive les budgets de charge de travail et d’éviter les pics de ressources inattendus. Les moniteurs de ressources peuvent aider à surveiller à la fois l’utilisation des utilisateurs et l’utilisation des comptes de service dans Snowflake. Tout d’abord, vous devez disposer d’entrepôts virtuels dédiés pour chacune de vos charges de travail de chargement, ELT, BI, de reporting et de science des données, ainsi que pour d’autres charges de travail. Les comptes et les entrepôts peuvent avoir des quotas de crédit totaux, annuels, mensuels, hebdomadaires et quotidiens.

La requête suivante identifiera tous les entrepôts qui n’ont pas de moniteur de ressources :

Meilleure pratique n° 10 : appliquer des moniteurs de ressources

Vous pouvez utiliser l’interface utilisateur ou SQL pour appliquer votre stratégie de moniteur de ressources. En fonction des paramètres de préférence du compte, les moniteurs de ressources peuvent vous avertir lorsque la consommation atteint un seuil inférieur, puis suspendre l’entrepôt ou le compte à un seuil supérieur.

Considérations pour la surveillance des ressources

  • Nous vous recommandons de configurer des moniteurs pour vous avertir lorsqu’un certain seuil de consommation est atteint.
  • Lorsque la consommation approche du niveau maximum budgété, configurez le moniteur de ressources pour suspendre automatiquement l’entrepôt ou l’intégralité du compte, permettant aux requêtes de se terminer mais empêchant les demandes futures.
  • Les moniteurs de ressources peuvent également être utilisés pour mettre fin à toutes les requêtes en cours d’exécution et suspendre immédiatement la ressource ou le compte. Ce paramètre est généralement réservé aux situations où un quota strict est dépassé.
  • Pour les clients qui ne souhaitent pas définir de limites strictes, il est toujours judicieux de définir des moniteurs de notification sur tous les entrepôts au cas où l’utilisation augmenterait de manière inattendue. De cette façon, tous les administrateurs du compte recevront un e-mail ou une notification à l’écran lorsque les seuils seront atteints.

La figure suivante montre l’écran de configuration du moniteur de ressources :

écran de configuration du moniteur de ressources

Le SQL ci-dessous peut être utilisé pour créer par programmation des moniteurs de ressources :

Meilleure pratique bonus : utiliser les tableaux de bord des partenaires BI

Comme onzième meilleure pratique en prime, utilisez les tableaux de bord créés par les passionnés de Snowflake chez certains de nos partenaires de BI et d’analyse pour vous aider à surveiller l’utilisation de Snowflake. Étant donné que l’utilisation de Snowflake est partagée avec chaque compte avec un schéma standard, il s’agit de tableaux de bord plug-and-play. L’une des meilleures parties de Snowflake est qu’il utilise le partage de données à l’échelle du pétaoctet pour partager des pipelines d’historique d’utilisation avec tous les comptes Snowflake. Veuillez consulter le Documentation pour plus de détails.

Tableau a mis en place une variété de tableaux de bord montrant l’utilisation du crédit, les performances et l’adoption de la plate-forme par les utilisateurs. Le tableau de bord Aperçu des coûts de calcul, illustré ci-dessous, peut être utilisé pour comprendre la consommation de crédit, planifier l’allocation budgétaire et identifier les valeurs aberrantes maximales afin de réduire l’impact des dépenses « temps d’achat ». L’équipe Enterprise Analytics de Tableau utilise ces tableaux de bord pour découvrir les modèles d’utilisation émergents et optimiser la rentabilité de l’entrepôt.

pour découvrir les modèles d'utilisation émergents et optimiser la rentabilité de l'entrepôt

L’équipe de Sigma a mis en place une série de tableaux de bord examinant les coûts de calcul, la hausse des utilisateurs et les performances. Sigma Analytics propose des modèles faciles à utiliser pour créer des tableaux de bord prêts pour la présentation affichant les données d’utilisation de votre compte Snowflake. Ces tableaux de bord peuvent être utilisés pour se plonger rapidement dans la compréhension et le partage de l’utilisation de Snowflake par votre organisation. La figure ci-dessous montre le tableau de bord d’utilisation prédéfini disponible dans Sigma :

  le tableau de bord d'utilisation pré-construit disponible dans Sigma

Suivez les liens ci-dessous pour voir les différents tableaux de bord d’utilisation pré-construits par nos partenaires BI :

Conclusion

Avec le calcul hautement élastique et le modèle de facturation à la seconde de Snowflake, les administrateurs de compte doivent surveiller en permanence l’utilisation, la croissance et l’efficacité des ressources pour s’assurer qu’ils correspondent aux exigences de performances et aux budgets. Même si Snowflake peut aider à optimiser automatiquement les ressources, les administrateurs de compte ont la possibilité d’affiner davantage leur déploiement, en particulier à mesure que leur empreinte informatique augmente. Nous recommandons ces meilleures pratiques de base pour surveiller et optimiser les ressources afin d’éviter les pièges courants faciles à ignorer.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.