View a markdown version of this page

Prácticas recomendadas para el diseño de tablas de Amazon Redshift - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Prácticas recomendadas para el diseño de tablas de Amazon Redshift

En esta sección se brinda información general sobre las prácticas recomendadas para diseñar tablas de bases de datos. Le recomendamos que siga estas prácticas recomendadas para lograr un rendimiento y una eficacia óptimos en las consultas.

Descripción del funcionamiento de las claves de clasificación

Amazon Redshift almacena los datos en el disco en un determinado orden en función de la clave de ordenación. El optimizador de consultas de Amazon Redshift utiliza la ordenación cuando determina cuáles son los planes óptimos de consulta. Para usar las claves de clasificación de forma eficaz, le recomendamos que haga lo siguiente:

  • Mantenga la tabla lo más ordenada posible.

  • Utilice la clasificación VACUUM para restablecer un rendimiento óptimo.

  • Evite comprimir la columna de claves de clasificación.

  • Si la clave de clasificación está comprimida y la relación sortkey1_skew es significativamente alta, vuelva a crear la tabla sin habilitar la compresión de la clave de clasificación.

  • Evite aplicar una función a las columnas de la clave de clasificación. Por ejemplo, en la siguiente consulta, la columna de claves de clasificación trans_dt : TIMESTAMPTZ no se usa si convierte su tipo a DATE:

    select order_id, order_amt from sales where trans_dt::date = '2021-01-08'::date
  • Realice las operaciones INSERT en el orden de las claves de clasificación.

  • Utilice las claves de clasificación en la cláusula GROUP BY siempre que sea posible.

Consejos de ajuste de consultas

Le recomendamos que siga estos pasos para ajustar las consultas:

  • Ordene siempre las claves de clasificación compuestas desde la cardinalidad más baja hasta la cardinalidad más alta para lograr una eficacia óptima.

  • Si la clave principal de una clave de clasificación compuesta es relativamente única (es decir, tiene una cardinalidad alta), evite agregar más columnas a la clave de clasificación. Agregar más columnas tiene poco impacto en el rendimiento de las consultas, pero incrementa los costos de mantenimiento.

Evaluación de la eficacia de las claves de clasificación

Para optimizar las consultas, debe poder evaluar su eficacia. Le recomendamos que utilice la vista SVL_QUERY_SUMMARY para encontrar información general acerca de la ejecución de una consulta. En esta vista, puede utilizar el atributo IS_RRSCAN para determinar si un paso del plan EXPLAIN usa un análisis de rango restringido. También puede utilizar el atributo rows_pre_filter para determinar la selectividad de una clave de clasificación.

Además, puede usar una vista de administración de GitHub denominada v_my_last_query_summary. En la vista se muestra información sobre la última consulta que se ejecutó.

La siguiente instrucción muestra cómo obtener información general acerca de la ejecución de una consulta.

select lpad(' ',stm+seg+step) || label as label, rows, bytes, is_diskbased, is_rrscan, rows_pre_filter from svl_query_summary where query = pg_last_query_id() order by stm, seg, step;

La consulta anterior devuelve el siguiente ejemplo de salida.

Ejemplo de salida de la consulta anterior.

Información sobre su tabla

Es importante entender las propiedades fundamentales de la tabla. Para obtener más información acerca de la tabla, siga estos pasos:

  • Use PG_TABLE_DEF para ver información acerca de las columnas de la tabla.

  • Use SVV_TABLE_INFO para consultar información más exhaustiva acerca de una tabla, incluidos el sesgo de distribución de datos, el sesgo de distribución de claves, el tamaño de tabla y las estadísticas.

Selección del estilo de distribución de tablas adecuado

Cuando ejecuta una consulta, el optimizador de consultas redistribuye las filas a los nodos de computación según se necesite para realizar combinaciones y agregaciones. El objetivo al seleccionar un estilo de distribución de tablas es reducir el impacto del paso de redistribución al localizar los datos en el lugar que deben estar antes de que ejecute la consulta. 

Recomendamos el siguiente enfoque para elegir el estilo de distribución de tablas adecuado:

  • Para evitar la difusión y la redistribución en un plan de ejecución de consultas, coloque las filas dentro del mismo nodo. Por ejemplo, si selecciona DISTKEY, puede distribuir la tabla de hechos y la tabla unidimensional en sus columnas comunes. Seleccione la mayor dimensión según el tamaño del conjunto de datos filtrado. Solo se deben distribuir las filas que se usan en la combinación; por lo tanto, considere el tamaño del conjunto de datos después del filtrado, no el tamaño de la tabla.

  • Asegúrese de que no haya asimetría en la columna en la que se cree la clave de distribución. De ser así, un nodo de computación podría realizar más tareas que otros. Si observa que hay asimetría, considere la posibilidad de cambiar la columna de claves de distribución. Se puede considerar que una columna es candidata a contener claves de distribución si sus valores están distribuidos uniformemente o tienen valores cardinales altos.

  • Si la tabla utilizada en la condición de combinación es pequeña (menos de 1 GB), considere el estilo de distribución ALL.

  • Puede comprimir la clave de distribución, pero debe evitar comprimir la columna de las claves de clasificación (especialmente la primera columna de las claves de clasificación).

nota

Si utiliza la optimización automática de tablas, no necesita elegir el estilo de distribución de la tabla. Para obtener más información, consulte Uso de la optimización de tablas automática en la documentación de Amazon Redshift. Para que Amazon Redshift elija el estilo de distribución adecuado, especifique AUTO en el estilo de distribución.