Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Fragmentación en columnas SUPER con vistas materializadas - Amazon Redshift

Fragmentación en columnas SUPER con vistas materializadas

Con Amazon Redshift, puede mejorar el rendimiento de las consultas y reducir los requisitos de almacenamiento al triturar los datos en columnas SUPER mediante vistas materializadas. La trituración se refiere al proceso de dividir tipos de datos complejos, como JSON o XML semiestructurados, en columnas más pequeñas y planas. Las columnas SUPER son una forma especializada de almacenamiento en columnas optimizada para escanear rápidamente los datos triturados.

En las siguientes secciones se describen los pasos y las consideraciones para triturar datos en columnas SUPER mediante vistas materializadas en Amazon Redshift.

En el siguiente ejemplo, se muestra una vista materializada que fragmenta los datos anidados, mientras las columnas resultantes siguen siendo del tipo de datos SUPER.

SELECT c.c_name, o.o_orderstatus FROM customer_orders_lineitem c, c.c_orders o;

En el siguiente ejemplo, se muestra una vista materializada que crea columnas escalares convencionales de Amazon Redshift a partir de los datos fragmentados.

SELECT c.c_name, c.c_orders[0].o_totalprice FROM customer_orders_lineitem c;

Puede crear una única vista materializada super_mv para acelerar ambas consultas.

Para responder la primera consulta, debe materializar el atributo o_orderstatus. Puede omitir el atributo c_name porque no implica la navegación anidada ni la eliminación del anidamiento. También debe incluir en la vista materializada el atributo c_custkey de customer_orders_lineitem para poder unir la tabla base con la vista materializada.

Para responder la segunda consulta, también debe materializar el atributo o_totalprice y el índice de matriz o_idx de c_orders. Por consiguiente, puede acceder al índice 0 de c_orders.

CREATE MATERIALIZED VIEW super_mv distkey(c_custkey) sortkey(c_custkey) AS ( SELECT c_custkey, o.o_orderstatus, o.o_totalprice, o_idx FROM customer_orders_lineitem c, c.c_orders o AT o_idx );

Los atributos o_orderstatus y o_totalprice de la vista materializada super_mv son de tipo SUPER.

La vista materializada super_mv se actualizará progresivamente luego de los cambios que se realicen en la tabla base customer_orders_lineitem.

REFRESH MATERIALIZED VIEW super_mv; INFO: Materialized view super_mv was incrementally updated successfully.

Para volver a escribir la primera consulta PartiQL como una consulta SQL normal, una customer_orders_lineitem con super_mv de la siguiente manera.

SELECT c.c_name, v.o_orderstatus FROM customer_orders_lineitem c JOIN super_mv v ON c.c_custkey = v.c_custkey;

Del mismo modo, puede reescribir la segunda consulta PartiQL. En el siguiente ejemplo, se utiliza un filtro en o_idx = 0.

SELECT c.c_name, v.o_totalprice FROM customer_orders_lineitem c JOIN super_mv v ON c.c_custkey = v.c_custkey WHERE v.o_idx = 0;

En el comando CREATE MATERIALIZED VIEW, especifique c_custkey como clave de distribución y de ordenación para super_mv. Amazon Redshift realiza una unión de combinación eficiente, suponiendo que c_custkey también es la clave de distribución y la clave de ordenación de customer_orders_lineitem. Si ese no es el caso, puede especificar c_custkey como la clave de ordenación y de distribución de customer_orders_lineitem de la siguiente manera.

ALTER TABLE customer_orders_lineitem ALTER DISTKEY c_custkey, ALTER SORTKEY (c_custkey);

Utilice la instrucción EXPLAIN para comprobar que Amazon Redshift realiza una unión de combinación en las consultas reescritas.

EXPLAIN SELECT c.c_name, v.o_orderstatus FROM customer_orders_lineitem c JOIN super_mv v ON c.c_custkey = v.c_custkey; QUERY PLAN ------------------------------------------------------------------------------------------------------ XN Merge Join DS_DIST_NONE (cost=0.00..34701.82 rows=1470776 width=27) Merge Cond: ("outer".c_custkey = "inner".c_custkey) -> XN Seq Scan on mv_tbl__super_mv__0 derived_table2 (cost=0.00..14999.86 rows=1499986 width=13) -> XN Seq Scan on customer_orders_lineitem c (cost=0.00..999.96 rows=99996 width=30) (4 rows)
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.