O Amazon Redshift criou tabelas temporárias no meu cluster, e eu quero saber por quê. Além disso, quero saber se essas tabelas consomem o espaço de memória disponível em meus nós.
Resolução
O Amazon Redshift cria tabelas temporárias para armazenar os resultados intermediários do processamento de consultas das operações de linguagem de definição de dados (DDL) e linguagem de manipulação de dados (DML). O Amazon Redshift armazena essas tabelas em um esquema separado, específico da sessão, com uma convenção de nomenclatura pg_temp_1. Não é possível especificar um nome para esse esquema. A atualização da visão materializada também usa tabelas temporárias para armazenar resultados de consultas intermediárias.
Os usuários também podem usar as palavras-chave TEMPORARY e TEMP nas instruções CREATE TABLE para criar tabelas temporárias.
Importante: se você especificar um nome de tabela que comece com #, o Amazon Redshift criará a tabela como uma tabela temporária. Exemplo de comando:
create table #newtable (id) as select * from oldtable;
As tabelas temporárias são visíveis somente na sessão atual. Após o término da sessão, o Amazon Redshift exclui automaticamente as tabelas temporárias dessa sessão.
Ao ativar o compartilhamento de dados no cluster, é possível definir o cluster como consumidor. Nesse cenário, o Amazon Redshift cria objetos temporários para armazenar os blocos de dados que os usuários finais recuperam do cluster de produção.
Por padrão, os usuários do banco de dados têm permissões para criar tabelas temporárias por meio da associação automática ao grupo PUBLIC. Para bloquear essa permissão, execute a seguinte consulta para revogar as permissões TEMP do grupo PUBLIC:
Revoke TEMPORARY | TEMP on DATABASE db_name from GROUP PUBLIC;
Observação: substitua db_name pelo nome do seu banco de dados.
Em seguida, conceda explicitamente permissões TEMP aos usuários ou grupos de usuários que você deseja permitir que criem tabelas temporárias.
Entender o armazenamento temporário de tabelas
As tabelas temporárias usam armazenamento local nos nós de computação. Depois que a sessão termina e o Amazon Redshift elimina as tabelas temporárias, o Amazon Redshift libera o armazenamento de volta para o nó. As tabelas temporárias atendem aos seguintes requisitos de armazenamento:
- Embora as tabelas temporárias usem a alocação geral de armazenamento para seu cluster, o armazenamento é transitório e não contribui para seus custos persistentes de armazenamento de dados.
- A quantidade de armazenamento que as tabelas temporárias usam depende do tamanho dos dados e da complexidade de suas consultas.
- Quando você tem consultas grandes e complexas que exigem grandes tabelas temporárias, o espaço de armazenamento do cluster pode aumentar temporariamente.
Observação: por padrão, o Amazon Redshift aplica a mesma compressão automática às tabelas temporárias e às tabelas permanentes. As tabelas temporárias são projetadas para um processamento eficiente de consultas e armazenam resultados intermediários para melhorar o desempenho da consulta.
Informações relacionadas
STV_TBL_PERM
STL_SAVE