Limpieza de tablas - Amazon Redshift

Limpieza de tablas

Amazon Redshift puede ordenar y realizar una operación VACUUM DELETE de forma automática en las tablas en segundo plano. Para limpiar las tablas tras una carga o una serie de actualizaciones incrementales, también puede ejecutar el comando VACUUM, ya sea en la base de datos completa o en tablas individuales.

nota

Solo los usuarios con los permisos de tabla necesarios pueden vaciar una tabla de forma eficaz. Si se ejecuta VACUUM sin los privilegios de tabla necesarios, la operación se completa correctamente pero no tiene ningún efecto. Para obtener una lista de los permisos de tabla válidos para ejecutar VACUUM de forma eficaz, consulte VACUUM.

Por esta razón, recomendamos realizar una limpieza de tablas individual según sea necesario. También recomendamos esta opción porque es probable que una limpieza de la base de datos completa sea una operación costosa.

Clasificación automática de tablas

Amazon Redshift ordena los datos en segundo plano de forma automática para mantener los datos de la tabla en el orden de su clave de ordenación. Amazon Redshift realiza un seguimiento de sus consultas de análisis para determinar las secciones de la tabla que se beneficiarán de la ordenación.

Según la carga en el sistema, Amazon Redshift inicia de forma automática la ordenación. La ordenación automática disminuye la necesidad de ejecutar el comando VACUUM para mantener los datos en orden de clave de ordenación. Si necesita que los datos estén ordenados en clave de ordenación, por ejemplo después de una gran carga de datos, puede ejecutar manualmente el comando VACUUM. Para determinar si su tabla se beneficia al ejecutar VACUUM SORT, monitorice la columna vacuum_sort_benefit en SVV_TABLE_INFO.

Amazon Redshift realiza un seguimiento de las consultas de análisis que utilizan la clave de ordenación en cada tabla. Amazon Redshift calcula el porcentaje máximo de mejora al analizar y filtrar los datos de cada tabla (si la tabla estaba completamente ordenada). Esta estimación está visible en la columna vacuum_sort_benefit en SVV_TABLE_INFO. Puede utilizar esta columna junto con la columna unsorted para determinar si las consultas pueden beneficiarse de la ejecución manual de VACUUM SORT en una tabla. La columna unsorted refleja el orden de clasificación físico de una tabla. La columna vacuum_sort_benefit especifica el impacto que tiene ordenar una tabla mediante la ejecución de VACUUM SORT de forma manual.

Por ejemplo, fíjese en la consulta siguiente:

select "table", unsorted,vacuum_sort_benefit from svv_table_info order by 1;
table | unsorted | vacuum_sort_benefit -------+----------+--------------------- sales | 85.71 | 5.00 event | 45.24 | 67.00

Para la tabla “sales”, aunque la tabla está físicamente desordenada un 86 %, la repercusión del rendimiento de la consulta de la tabla estando desordenada un 86 % es de solo un 5 %. Esto puede ser porque solo se puede acceder a una pequeña parte de la tabla por consultas o porque muy pocas consultas accedieron a la tabla. Para la tabla “event”, la tabla está desordenada físicamente un 45 %. Pero la repercusión del rendimiento de la consulta de un 67 % indica que se puede acceder a una gran parte de la tabla por consultas o que la cantidad de consultas que accedieron a la tabla fue grande. La tabla “event” se puede beneficiar potencialmente de ejecutar VACUUM SORT.

Eliminación de limpieza automática

Cuando se realiza una eliminación, las filas se marcan para eliminarse, pero esto no sucede. Amazon Redshift ejecuta de forma automática una operación VACUUM DELETE en segundo plano en función de la cantidad de filas eliminadas en las tablas de base de datos. Amazon Redshift programa la operación VACUUM DELETE para que se ejecute durante periodos de carga reducida y pone en pausa la operación durante periodos de carga elevada.

Frecuencia de ejecución de VACUUM

Debe limpiar con tanta frecuencia como sea necesario para mantener un rendimiento de consultas coherente. Al determinar con cuánta frecuencia debe ejecutar el comando VACUUM, considere los siguientes factores:

  • Ejecute VACUUM durante periodos en los que espera actividad mínima en el clúster, como por la noche o durante ventanas de administración de la base de datos designadas.

  • Ejecute los comandos VACUUM fuera de los periodos de mantenimiento. Para obtener más información, consulte Programación de periodos de mantenimiento.

  • Una región grande sin ordenar da como resultado tiempos de limpieza más prolongados. Si retrasa la limpieza, esta demorará más porque se necesitará reorganizar más datos.

  • VACUUM es una operación con muchas E/S, por lo que cuanto más demore en completarse la limpieza, más efecto tendrá sobre las consultas simultáneas y otras operaciones de base de datos que se ejecuten en su clúster.

  • VACUUM demora más en tablas con ordenación intercalada. Para evaluar si las tablas intercaladas necesitan reordenarse, consulte la vista SVV_INTERLEAVED_COLUMNS.

Fase de ordenación y fase de fusión

Amazon Redshift realiza una operación de limpieza en dos fases: primero, ordena las filas de la región no ordenada y, luego, de ser necesario, fusiona las filas recién ordenadas con las filas ya existentes en el final de la tabla. Al limpiar una tabla grande, la operación de limpieza avanza en una serie de pasos que consisten en ordenaciones incrementales seguidas de fusiones. Si se produce un error en la operación o si Amazon Redshift se desconecta durante una limpieza, la tabla o la base de datos limpiada de forma parcial se encontrarán en estado consistente, pero debe reiniciar la operación de limpieza de forma manual. Las ordenaciones incrementales se pierden, pero las filas fusionadas confirmadas antes del error no necesitar limpiarse de nuevo. Si la región sin ordenar es grande, el tiempo perdido podría ser significativo. Para obtener más información acerca de las fases de ordenación y fusión, consulte Administración del volumen de filas fusionadas.

Los usuarios pueden obtener acceso a las tablas mientras se limpian. Puede realizar consultas y escribir operaciones mientras se limpia una tabla, pero cuando se ejecutan DML y una limpieza de manera simultánea, ambas operaciones podrían demorar más de lo usual. Si se ejecutan las instrucciones UPDATE y DELETE durante una limpieza, el rendimiento del sistema podría reducirse. Las fusiones incrementales bloquean temporalmente las operaciones UPDATE y DELETE simultáneas, y estas últimas, a su vez, bloquean temporalmente los pasos de fusión incrementales en las tablas afectadas. Las operaciones DDL, como ALTER TABLE, se bloquean hasta que la operación de limpieza finaliza con la tabla.

nota

Hay varios modificadores de VACUUM que controlan la forma en que funciona. Puede utilizarlos para adaptar la operación de limpieza a las necesidades actuales. Por ejemplo, el uso de VACUUM RECLUSTER acorta la operación de limpieza, ya que no se realiza una operación de fusión completa. Para obtener más información, consulte VACUUM.

Umbral de limpieza

De manera predeterminada, VACUUM omite la fase de ordenación para cualquier tabla que tenga más del 95 por ciento de las filas de la tabla ordenadas. La omisión de la fase de ordenación puede mejorar significativamente el rendimiento de VACUUM. Para cambiar el umbral de ordenación predeterminado de una tabla única, incluya el nombre de la tabla y el parámetro TO threshold (umbral) PERCENT cuando ejecute el comando VACUUM.

Tipos de limpieza

Para obtener más información acerca de los distintos tipos de limpieza, consulte VACUUM.