ANALYZE - Amazon Redshift

ANALYZE

Actualiza las estadísticas de la tabla para que el planificador de consultas las utilice.

Privilegios necesarios

Los siguientes privilegios son necesarios para ANALYZE:

  • Superusuario

  • Usuarios con el privilegio ANALYZE

  • Propietario de la relación

  • Propietario de la base de datos con quien se comparte la tabla

Sintaxis

ANALYZE [ VERBOSE ] [ [ table_name [ ( column_name [, ...] ) ] ] [ PREDICATE COLUMNS | ALL COLUMNS ]

Parámetros

VERBOSE

Una cláusula que devuelve mensajes de información de progreso acerca de la operación ANALYZE. Esta opción es útil cuando no se especifica una tabla.

table_name

Puede analizar tablas específicas, incluidas tablas temporales. Puede completar la tabla con el nombre de su esquema. Si lo desea, puede especificar un table_name (nombre_de_tabla) para analizar una única tabla. No puede especificar más de un table_name (nombre_de_tabla) con una única instrucción ANALYZE table_name (nombre_de_tabla). Si no se especifica un valor table_name, se analizan todas las tablas de la base de datos actualmente conectada, incluidas las tablas persistentes en el catálogo del sistema. Amazon Redshift omite el análisis de una tabla si el porcentaje de filas que se han modificado desde la última operación ANALYZE es inferior al límite de análisis. Para obtener más información, consulte Umbral de análisis.

No necesita analizar las tablas de sistema de Amazon Redshift (tablas STL y STV).

column_name

Si especifica un valor table_name (nombre_de_tabla), también puede especificar una o varias columnas de la tabla (como una lista de valores separados por columnas entre paréntesis). Si se especifica una lista de columnas, solo se analizarán las columnas que aparecen en la lista.

PREDICATE COLUMNS | ALL COLUMNS

Se trata de cláusulas que indican si ANALYZE debe incluir solo columnas de predicados. Especifique PREDICATE COLUMNS para analizar solamente las columnas utilizadas como predicados en consultas anteriores o que sean posibles candidatas para utilizarse como predicados. Especifique ALL COLUMNS para analizar todas las columnas. El valor predeterminado es ALL COLUMNS.

Se incluye una columna en el conjunto de columnas de predicados si cualquiera de los siguientes es verdadero:

  • La columna ha sido utilizada en una consulta como parte de un filtro, una condición de combinación o una cláusula de agrupación.

  • La columna es una clave de distribución.

  • La columna forma parte de una clave de ordenación.

Si no se marca ninguna columna como columna de predicado, por ejemplo porque la tabla aún no se ha consultado, se analizan todas las columnas incluso si PREDICATE COLUMNS está especificado. Cuando esto sucede, Amazon Redshift podría responder con un mensaje similar a No se han encontrado columnas de predicado para “nombre-de-tabla”. Analizando todas las columnas. Para obtener más información acerca de las columnas de predicados, consulte Análisis de tablas.

Notas de uso

Amazon Redshift ejecuta ANALYZE de manera automática en las tablas que usted crea con los siguientes comandos:

  • CREATE TABLE AS

  • CREATE TEMP TABLE AS

  • SELECT INTO

No puede analizar una tabla externa.

No es necesario ejecutar el comando ANALYZE en estas tablas cuando se crean por primera vez. Si las modifica, debe analizarlas de la misma manera en que analiza las demás tablas.

Umbral de análisis

Para reducir el tiempo de procesamiento y mejorar el rendimiento general del sistema, Amazon Redshift omite la operación ANALYZE en una tabla si el porcentaje de filas que se han modificado desde que se ejecutó el comando ANALYZE por última vez es inferior al límite de análisis especificado por el parámetro analyze_threshold_percent. Por defecto, analyze_threshold_percent es 10. Si desea cambiar analyze_threshold_percent para la sesión actual, ejecute el comando SET. En el siguiente ejemplo, se cambia analyze_threshold_percent a 20 por ciento.

set analyze_threshold_percent to 20;

Para analizar las tablas cuando solo han cambiado unas pocas filas, establezca analyze_threshold_percent en un número pequeño elegido arbitrariamente. Por ejemplo, si establece analyze_threshold_percent como 0,01, las tablas con 100 000 000 filas no se omitirán si se han modificado al menos 10 000 filas.

set analyze_threshold_percent to 0.01;

Si ANALYZE omite una tabla porque no cumple con el umbral de análisis, Amazon Redshift devuelve el siguiente mensaje.

ANALYZE SKIP

Para analizar todas las tablas, aunque no haya cambiado ninguna fila, establezca analyze_threshold_percent en 0.

Para ver los resultados de las operaciones ANALYZE, consulte la tabla del sistema STL_ANALYZE.

Para obtener más información acerca del análisis de tablas, consulte Análisis de tablas.

Ejemplos

Analiza todas las tablas de la base de datos TICKIT y devolver la información de progreso.

analyze verbose;

Analiza solo la tabla LISTING.

analyze listing;

Analiza las columnas VENUEID y VENUENAME de la tabla VENUE.

analyze venue(venueid, venuename);

Analiza solo columnas de predicado de la tabla VENUE.

analyze venue predicate columns;