Meilleures pratiques¶
Cette rubrique fournit les meilleures pratiques pour utiliser les tables Apache Iceberg™ dans Snowflake.
Création de volumes externes suffisants pour votre cas d’utilisation¶
Chaque volume externe est associé à un Emplacement de stockage actif particulier, et un seul volume externe peut prendre en charge plusieurs tables Iceberg. Cependant, le nombre de volumes externes dont vous avez besoin dépend de la manière dont vous souhaitez stocker, organiser et sécuriser vos données de table.
Vous pouvez utiliser un seul volume externe si vous souhaitez que les données et les métadonnées de toutes vos tables Snowflake-Iceberg se trouvent dans des sous-répertoires sous le même emplacement de stockage (par exemple, dans le même compartiment S3). Pour configurer ces répertoires pour les tables gérées par Snowflake, voir Répertoires de données et de métadonnées.
Vous pouvez également créer plusieurs volumes externes pour sécuriser différemment différents emplacements de stockage. Par exemple, vous pouvez créer les volumes externes suivants :
Un volume externe en lecture seule pour les tables Iceberg gérées en externe.
Un volume externe configuré avec un accès en lecture et en écriture pour les tables gérées par Snowflake.
Utilisation des options de format de fichier recommandées pour le chargement des données¶
Pour le chargement des données avec COPY INTO <table> et Snowpipe, utilisez les options de format suivantes pour vos fichiers de données Parquet :
BINARY_AS_TEXT = FALSE
USE_LOGICAL_TYPE = TRUE
USE_VECTORIZED_SCANNER = TRUE
REPLACE_INVALID_CHARACTERS = TRUE
Actualisation fréquente des tables gérées en externe¶
Pour éviter de longs temps d’actualisation et obtenir rapidement les données de table les plus à jour, effectuez des actualisations fréquentes sur les tables Iceberg qui utilisent un catalogue externe.
Snowflake tente d’optimiser les actualisations de table lorsqu’il s’attend à ce que l’opération prenne beaucoup de temps. Cependant, le temps d’actualisation dépend en fin de compte du nombre d’instantanés associés à une table et du nombre de fichiers de données appartenant à une table.
Il est également important d’aligner votre planification d’actualisation Snowflake sur les opérations de maintenance des tables, telles que l’expiration des instantanés ou le compactage. Actualisez les métadonnées chaque fois que vous effectuez une opération de maintenance.
Pour obtenir des instructions, voir Actualiser les métadonnées de la table.
Écriture de statistiques complètes¶
Pour optimiser les performances d’exécution des requêtes pour les tables qui ne sont pas gérées par Snowflake, assurez-vous que les statistiques de votre fichier Parquet sont aussi complètes que possible.
Assurez-vous que le scripteur de fichiers Parquet que vous utilisez (par exemple, Spark ou Trino) est configuré pour écrire des statistiques. Vous devrez peut-être également mettre à jour votre scripteur sur la dernière version.
Les statistiques manquantes telles que les suivantes dégradent les performances des requêtes :
Valeurs minimales et maximales.
Nombre de valeurs distinctes (NDV) Le nombre de valeurs distinctes est utilisé pour déterminer l’ordre de jointure dans les jointures complexes. Des statistiques NDV manquantes peuvent conduire à une explosion de la jointure.
Nombre de valeurs NULL
Augmentation de la taille des entrepôts¶
Lorsque vous créez une table Iceberg qui utilise un catalogue externe, Snowflake tente de lire les statistiques à partir des fichiers manifestes de la table pour fournir des performances plus rapides.
Dans certaines situations, par exemple lorsque des statistiques sont manquantes ou incorrectes dans les fichiers manifestes, Snowflake analyse les fichiers de données de la table à la recherche de statistiques. L’analyse d’un grand nombre de fichiers de données peut ralentir la création de tables. Pour accélérer le processus de création de table, utilisez un entrepôt plus grand capable d’analyser les fichiers de table en parallèle.
Note
Snowflake ne parallélise pas l’analyse des colonnes de table. Le passage à un entrepôt plus grand n’entraîne pas une exécution plus rapide des requêtes.
Choisissez la politique de sérialisation de stockage adaptée à votre cas d’utilisation¶
Choisissez une STORAGE_SERIALIZATION_POLICY
appropriée à votre cas d’utilisation. Lorsque vous créez une table gérée par Snowflake (ou que vous convertissez une table pour utiliser Snowflake comme catalogue), vous définissez une politique de sérialisation de stockage pour cette table. La politique de sérialisation indique à Snowflake quel type d’encodage et de compression effectuer sur les fichiers de données de la table.
Une politique inappropriée peut rendre une table incompatible avec des moteurs externes ou entraîner une dégradation des performances dans Snowflake.
Pour plus d’informations, voir CREATEICEBERGTABLE (Snowflake comme catalogue Iceberg).