Passer au contenu

Pourquoi Amazon Redshift crée-t-il des tables temporaires sur mon cluster et ces tables consomment-elles de l'espace mémoire sur les nœuds ?

Lecture de 3 minute(s)
0

Amazon Redshift a créé des tables temporaires sur mon cluster, et je souhaite savoir pourquoi. De plus, je souhaite savoir si ces tables consomment l'espace mémoire disponible sur mes nœuds

Résolution

Amazon Redshift crée des tables temporaires pour stocker les résultats du traitement des requêtes intermédiaires des opérations en langage de définition des données (DDL) et en langage de manipulation des données (DML). Amazon Redshift stocke ces tables dans un schéma distinct, spécifique à la session, avec une convention de dénomination pg_temp_1. Vous ne pouvez pas spécifier de nom pour ce schéma. L'actualisation de la vue matérialisée utilise également des tables temporaires pour stocker les résultats des requêtes intermédiaires.

Les utilisateurs peuvent également utiliser les mots-clés TEMPORARY et TEMP dans les instructions CREATE TABLE pour créer des tables temporaires.

Important : Si vous spécifiez un nom de table commençant par #, Amazon Redshift crée la table en tant que table temporaire. Exemple de commande :

create table #newtable (id) as select * from oldtable;

Les tables temporaires ne sont visibles que pendant la session en cours. Une fois la session terminée, Amazon Redshift supprime automatiquement les tables temporaires de cette session.

Lorsque vous activez le partage de données sur le cluster, vous pouvez définir le cluster en tant que consommateur. Dans ce scénario, Amazon Redshift crée des objets temporaires pour stocker les blocs de données que les utilisateurs finaux récupèrent depuis le cluster producteur.

Par défaut, les utilisateurs de base de données sont autorisés à créer des tables temporaires grâce à leur appartenance automatique au groupe PUBLIC. Pour bloquer cette autorisation, exécutez la requête suivante pour révoquer les autorisations TEMP du groupe PUBLIC :

Revoke TEMPORARY | TEMP on DATABASE db_name from GROUP PUBLIC;

Remarque : Remplacez db_name par le nom de votre base de données.

Ensuite, accordez explicitement des autorisations TEMP aux utilisateurs ou aux groupes d'utilisateurs que vous souhaitez autoriser à créer des tables temporaires.

Comprendre le stockage de table temporaire

Les tables temporaires utilisent le stockage local sur les nœuds de calcul. Une fois la session terminée et qu'Amazon Redshift supprime les tables temporaires, Amazon Redshift libère le stockage sur le nœud. Les tables temporaires respectent les exigences de stockage suivantes :

  • Bien que les tables temporaires utilisent l'allocation de stockage globale pour votre cluster, le stockage est transitoire et ne contribue pas à vos coûts de stockage de données persistants.
  • La quantité de stockage utilisée par les tables temporaires dépend de la taille des données et de la complexité de vos requêtes.
  • Lorsque vous avez des requêtes complexes et volumineuses qui nécessitent de grandes tables temporaires, l'espace de stockage du cluster peut augmenter temporairement.

Remarque : Par défaut, Amazon Redshift applique la même compression automatique aux tables temporaires qu'aux tables permanentes. Les tables temporaires sont conçues pour traiter efficacement les requêtes et stockent les résultats intermédiaires afin d'améliorer les performances des requêtes.

Informations connexes

STV_TBL_PERM

STL_SAVE

AWS OFFICIELA mis à jour il y a un an