Amazon Redshift creó tablas temporales en mi clúster y quiero saber por qué. Además, quiero saber si estas tablas consumen el espacio de memoria disponible en mis nodos
Resolución
Amazon Redshift crea tablas temporales para almacenar los resultados del procesamiento de consultas intermedias de las operaciones del lenguaje de definición de datos (DDL) y del lenguaje de manipulación de datos (DML). Amazon Redshift almacena estas tablas en un esquema independiente y específico de la sesión con una convención de nomenclatura pg_temp_1. No puedes especificar un nombre para este esquema. La actualización de la vista materializada también utiliza tablas temporales para almacenar los resultados de las consultas intermedias.
Los usuarios también pueden usar las palabras clave TEMPORARY y TEMP en instrucciones CREATE TABLE para crear tablas temporales.
Importante: Si especificas un nombre de tabla que comience por #, Amazon Redshift creará la tabla como una tabla temporal. Ejemplo de comando:
create table #newtable (id) as select * from oldtable;
Las tablas temporales solo están visibles en la sesión actual. Una vez finalizada la sesión, Amazon Redshift elimina automáticamente las tablas temporales de esa sesión.
Al activar el uso compartido de datos en el clúster, puedes establecer el clúster como consumidor. En este escenario, Amazon Redshift crea objetos temporales para almacenar los bloques de datos que los usuarios finales recuperan del clúster productor.
De forma predeterminada, los usuarios de bases de datos tienen permisos para crear tablas temporales mediante su pertenencia automática al grupo PUBLIC. Para bloquear este permiso, ejecuta la siguiente consulta para revocar los permisos TEMP del grupo PUBLIC:
Revoke TEMPORARY | TEMP on DATABASE db_name from GROUP PUBLIC;
Nota: Sustituye db_name por el nombre de la base de datos.
A continuación, concede permisos TEMP de forma explícita a los usuarios o grupos de usuarios a los que desees permitir la creación de tablas temporales.
Descripción del almacenamiento temporal de tablas
Las tablas temporales utilizan el almacenamiento local en los nodos de procesamiento. Cuando finaliza la sesión y Amazon Redshift elimina las tablas temporales, Amazon Redshift devuelve el almacenamiento al nodo. Las tablas temporales cumplen con los siguientes requisitos de almacenamiento:
- Si bien las tablas temporales utilizan la asignación de almacenamiento general del clúster, el almacenamiento es transitorio y no contribuye a los costes de almacenamiento de datos persistentes.
- La cantidad de almacenamiento que utilizan las tablas temporales depende del tamaño de los datos y de la complejidad de las consultas.
- Cuando tienes consultas grandes y complejas que requieren tablas temporales de gran tamaño, el espacio de almacenamiento del clúster puede aumentar temporalmente.
Nota: De forma predeterminada, Amazon Redshift aplica la misma compresión automática a las tablas temporales que a las tablas permanentes. Las tablas temporales están diseñadas para procesar consultas de manera eficiente y almacenan resultados intermedios para mejorar el rendimiento de las consultas.
Información relacionada
STV_TBL_PERM
STL_SAVE