Redistribución de datos con EXPLAIN para los planes de consultas 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.

Redistribución de datos con EXPLAIN para los planes de consultas de Amazon Redshift

Durante las fases de combinación, es posible que un sector tenga que trabajar con datos no almacenados localmente, y la transmisión por red (movimiento de datos entre nodos de computación) es la operación de consulta que resulta más costosa.

La salida de EXPLAIN para las combinaciones también especifica un método con el cual los datos se mueven en torno a un clúster para facilitar la combinación. Este movimiento de datos puede ser una difusión o bien una redistribución.

  • En una difusión, los valores de los datos de un lado de la combinación se copian desde cada nodo de computación a los demás nodos de computación de manera que cada nodo de computación tenga una copia completa de los datos.

  • En una redistribución, se envían los valores de los datos participantes desde el sector donde están hacia un nuevo sector (posiblemente en un nodo diferente). Los datos, por lo general, se redistribuyen para coincidir con la clave de distribución de la otra tabla participante de la combinación si esa clave de distribución es una de las columnas que se está combinando. Si ninguna de las tablas tiene claves de distribución en las columnas que se están combinando, se distribuyen ambas tablas, o bien se difunde la tabla interna en cada uno de los nodos.

La salida de EXPLAIN también hace referencia a las tablas internas y externas.

  • Primero se examina la tabla interna; esta aparece cerca de la parte inferior del plan de consulta. La tabla interna es la tabla en la que se buscan las filas coincidentes en la tabla de creación. Por lo general, una tabla interna que se almacena en la memora suele ser la tabla de origen de los algoritmos hash y, de ser posible, es la tabla más pequeña de las dos que se están combinando.

  • La tabla externa es el origen de las filas en las que se busca coincidencias con la tabla interna y se suele leer desde el disco. El optimizador de consultas selecciona la tabla interna y externa en función de las estadísticas de la base de datos extraídas de la última ejecución del comando ANALYZE. El orden de las tablas en la cláusula FROM de una consulta no determina cuál es la tabla interna y cuál es la externa.

Utilice los siguientes atributos en los planes de consulta para identificar cómo se mueven los datos y, así, facilitar una consulta:

  • DS_BCAST_INNER: indica que se está transmitiendo una copia de toda la tabla de combinación interna a todos los nodos de computación.

  • DS_DIST_ALL_NONE: no es necesario redistribuir, porque ya se distribuyó la tabla interna a cada nodo con DISTSTYLE ALL. Se ubica la tabla entera en cada nodo de computación.

  • DS_DIST_NONE: no es necesario redistribuir porque los sectores correspondientes se ubican junto a los nodos de computación. Esta es la opción más eficaz porque no supone ninguna transferencia de red.

  • DS_DIST_INNER: indica que la tabla de combinación interna se redistribuye. Si la tabla interna es mucho más pequeña o se actualiza con poca frecuencia, considere la posibilidad de cambiarla a DISTSTYLE ALL.

  • DS_DIST_OUTER: indica que la tabla de combinación externa se redistribuye. Si la tabla externa es mucho más pequeña o se actualiza con poca frecuencia, considere la posibilidad de cambiarla a DISTSTYLE ALL.

  • DS_DIST_ALL_INNER: indica que la tabla de combinación interna se envía a un único nodo porque la tabla de combinación utiliza DISTSTYLE ALL. Esta combinación se ejecuta en un solo nodo y es probable que sea lenta.

  • DS_DIST_BOTH: indica que las dos tablas de la combinación se están redistribuyendo a todos los nodos. Esta es la peor opción posible.