Puedes leer todo sin registrarte. Solo crearemos un perfil anónimo cuando decidas guardar tu progreso.
Professional
Photon, data skipping y liquid clustering
Diseña layout y mantenimiento de tablas según patrones de consulta que cambian con el tiempo.
- Interpretar data skipping y pruning
- Elegir liquid clustering
- Explicar deletion vectors, Photon y predictive optimization
01Modelo mentalPhoton y ejecución vectorizada
Entiende dónde Photon acelera el plan, cómo detecta un fallback y por qué medir precio/rendimiento importa más que comparar DBU por hora.
+
Photon y ejecución vectorizada
Entiende dónde Photon acelera el plan, cómo detecta un fallback y por qué medir precio/rendimiento importa más que comparar DBU por hora.
- Objetivo
- Entiende dónde Photon acelera el plan, cómo detecta un fallback y por qué medir precio/rendimiento importa más que comparar DBU por hora.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m23
Photon es el motor vectorizado nativo de Databricks. Catalyst sigue generando el plan, mientras Photon ejecuta operadores compatibles en lotes columnares y usa un runtime C++ que reduce costes de JVM. Está habilitado en serverless y SQL warehouses, y por defecto en compute clásico moderno; acelera scans, joins, agregaciones, shuffles y escrituras compatibles sin exigir reescribir SQL o DataFrames.
No toda consulta mejora igual. UDFs, RDDs, APIs Dataset y operaciones no compatibles pueden ejecutar partes en Spark, y consultas subsegundo suelen estar dominadas por planificación. En Spark UI los operadores Photon se distinguen en el DAG; en Query Profile se observa el porcentaje de tiempo. Evalúa duración, task time, datos leídos y coste total, no sólo que la casilla esté activada.
Modelo mental
Photon no es otro clúster ni una base separada: es un motor vectorizado nativo que ejecuta operadores compatibles dentro del plan de Spark y SQL. Procesa valores por lotes con código optimizado y mejora especialmente scans amplios, joins, agregaciones y escrituras; un plan puede alternar operadores Photon y runtime Spark sin cambiar resultados. Por eso activar Photon no garantiza una aceleración uniforme. La métrica correcta es precio/rendimiento del workload completo y porcentaje de tiempo realmente ejecutado por Photon. Una UDF, una API RDD o una operación no soportada crea fallback; las consultas de menos de unos segundos pueden estar dominadas por latencia fija y no mostrar beneficio material.
Procesamiento de lotes de valores mediante operaciones nativas eficientes en lugar de interpretar fila a fila.
Aumenta rendimiento de CPU y aprovecha mejor memoria para operadores analíticos compatibles.Ejecución transparente de un operador con el runtime Spark cuando Photon no lo soporta.
El resultado sigue siendo correcto, pero una sección costosa puede limitar la aceleración total.Coste monetario o de uso por una unidad completa de trabajo útil y correcta.
Permite comparar motores aunque difieran tarifa horaria y duración.SELECT
order_date,
customer_segment,
SUM(net_amount) AS net_revenue,
COUNT(DISTINCT order_id) AS orders
FROM prod.gold.sales
WHERE order_date >= current_date() - INTERVAL 30 DAYS
GROUP BY order_date, customer_segment;Revisa el Query Profile para confirmar pruning, operadores más caros y tiempo en Photon; no infieras el resultado sólo por la sintaxis.
Puntos clave
- Photon cambia la ejecución física, no la semántica ni el plan lógico de Catalyst.
- Localiza fallbacks con Spark UI o Query Profile.
- Compara coste por trabajo terminado, no tarifa aislada de DBU.
Evita
- Atribuir toda mejora a Photon sin controlar caché, volumen y concurrencia entre pruebas.
- Mantener una UDF evitable y concluir que Photon no aporta valor al workload.
Recuerdo activo
¿Qué ocurre cuando Photon encuentra una operación no compatible?
Borrador privado · solo en este navegador02ImplementaciónStatistics y data skipping
Diseña data skipping a partir de predicados reales y estadísticas, evitando layouts que sólo reflejan cómo llegó el dato.
+
Statistics y data skipping
Diseña data skipping a partir de predicados reales y estadísticas, evitando layouts que sólo reflejan cómo llegó el dato.
- Objetivo
- Diseña data skipping a partir de predicados reales y estadísticas, evitando layouts que sólo reflejan cómo llegó el dato.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m23
Delta registra estadísticas por archivo para que el motor descarte archivos cuyo rango no puede satisfacer el filtro. El skipping funciona cuando las columnas consultadas tienen estadísticas útiles y los valores están organizados de forma que distintos archivos cubren rangos discriminantes. Un filtro muy selectivo no ayuda si todos los archivos contienen casi todo el rango de la columna.
En tablas Unity Catalog administradas, predictive optimization puede recopilar estadísticas automáticamente. Si cambias las columnas de estadísticas, `ANALYZE TABLE ... COMPUTE DELTA STATISTICS` recalcula la información del log; las estadísticas del optimizador se actualizan con `ANALYZE TABLE ... COMPUTE STATISTICS`. Verifica en Query Profile bytes leídos y porcentaje podado, no sólo el tiempo caliente de una segunda ejecución.
Modelo mental
Data skipping funciona como un índice grueso distribuido: Delta conserva estadísticas por archivo, como mínimos y máximos de columnas elegibles, y el motor descarta archivos imposibles antes de leer sus filas. No busca una fila concreta ni sustituye un filtro; reduce el conjunto de archivos candidatos cuando el predicado es selectivo y los valores relacionados están físicamente agrupados. Si cada archivo contiene todo el rango de fechas o clientes, sus intervalos se solapan y las estadísticas no ayudan. El diseño empieza con el historial real de filtros y joins, no con el orden de llegada. Clustering, compactación y tamaño de archivos moldean la utilidad de esas estadísticas sin crear una jerarquía rígida de directorios.
Metadato como mínimo, máximo, nulos y recuento asociado a un archivo de datos.
Permite descartar archivos sin leer su contenido cuando el predicado queda fuera del rango.Eliminación de archivos o particiones candidatas durante la planificación de lectura.
Reduce I/O y trabajo downstream; Query Profile permite medir cuántos bytes se evitaron.Fracción del conjunto total que satisface un predicado.
Los filtros selectivos obtienen más valor de un layout que agrupa sus columnas.ALTER TABLE prod.gold.orders
SET TBLPROPERTIES ('delta.dataSkippingStatsColumns' = 'order_date,customer_id');
ANALYZE TABLE prod.gold.orders COMPUTE DELTA STATISTICS;
ANALYZE TABLE prod.gold.orders COMPUTE STATISTICS;
SELECT *
FROM prod.gold.orders
WHERE order_date = DATE '2026-07-20'
AND customer_id = 184203;La recomputación puede ser costosa en tablas grandes; documenta el cambio y compara bytes leídos antes y después.
Puntos clave
- El skipping depende de estadísticas y distribución física, no de índices de filas tradicionales.
- Prioriza columnas presentes en filtros selectivos y frecuentes.
- Mide bytes/archivos podados con caché controlada.
Evita
- Añadir muchas columnas de estadísticas sin relación con predicados, aumentando metadatos y mantenimiento.
- Medir sólo una segunda consulta que ya se beneficia de caché.
Recuerdo activo
Una consulta filtra por `customer_id`, pero todos los archivos contienen IDs de todo el rango. ¿Por qué el skipping será débil?
Borrador privado · solo en este navegador03OperaciónParticionado y sus límites
Usa liquid clustering para adaptar el layout a patrones de acceso cambiantes sin heredar la rigidez de particiones físicas de alta cardinalidad.
+
Particionado y sus límites
Usa liquid clustering para adaptar el layout a patrones de acceso cambiantes sin heredar la rigidez de particiones físicas de alta cardinalidad.
- Objetivo
- Usa liquid clustering para adaptar el layout a patrones de acceso cambiantes sin heredar la rigidez de particiones físicas de alta cardinalidad.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m23
Liquid clustering reemplaza particionado y `ZORDER` para tablas nuevas que necesitan layout flexible. `CLUSTER BY` define claves y las operaciones de mantenimiento reagrupan datos incrementalmente. Las claves pueden evolucionar sin reescribir inmediatamente toda la tabla; lecturas y escrituras requieren versiones compatibles del runtime y no debes mezclar la tabla con particionado tradicional o `ZORDER`.
Automatic liquid clustering usa predictive optimization para escoger y evolucionar claves cuando el ahorro esperado por skipping supera el coste de clustering. La decisión práctica parte de consultas observadas: filtros por fecha y cliente pueden justificar claves, mientras una columna de cardinalidad extrema sin patrón estable puede empeorar mantenimiento. Valida en historial y perfiles qué archivos se podan.
Modelo mental
Liquid clustering separa la identidad lógica de una tabla de su organización física. En lugar de fijar directorios de partición que cada fila debe habitar para siempre, declara unas claves de clustering y deja que OPTIMIZE organice incrementalmente archivos para favorecer data skipping. Las claves pueden cambiar sin reescribir de inmediato todo el histórico; los datos nuevos y las futuras optimizaciones siguen la nueva intención. Esto hace el layout adaptable a cardinalidad alta, skew y consultas cambiantes. No significa que una declaración reordene instantáneamente los archivos existentes: activar o cambiar claves establece una política futura, y sólo el trabajo de clustering, automático o explícito, materializa gradualmente el beneficio.
Columna declarada como señal para agrupar físicamente valores en archivos sin crear directorios de partición.
Mejora data skipping y puede cambiar conforme evoluciona el patrón de consulta.Reescritura sólo de archivos que requieren reorganización durante operaciones de optimización.
Evita reclasificar toda la tabla en cada ejecución y hace viable el mantenimiento continuo.Modo que fuerza reclustering más amplio de datos existentes en tablas liquid-clustered compatibles.
Materializa nuevas claves históricamente, pero su coste exige una razón y ventana operacional claras.CREATE TABLE prod.gold.customer_orders (
order_id BIGINT,
customer_id BIGINT,
order_date DATE,
net_amount DECIMAL(18,2)
)
USING DELTA
CLUSTER BY (order_date, customer_id);
INSERT INTO prod.gold.customer_orders
SELECT order_id, customer_id, order_date, net_amount
FROM prod.silver.orders;Elige claves a partir de filtros reales; habilitar clustering no garantiza beneficio si las consultas no podan por esas columnas.
Puntos clave
- Liquid clustering admite evolución de claves sin redefinir particiones físicas.
- No combines `CLUSTER BY` con `PARTITIONED BY` o `ZORDER` en la misma estrategia.
- Automatic liquid clustering requiere predictive optimization.
Evita
- Replicar la antigua columna de partición como clave sin revisar el historial de consultas.
- Ejecutar mantenimiento manual agresivo mientras predictive optimization ya gestiona la tabla.
Recuerdo activo
¿Qué ventaja ofrece cambiar claves de liquid clustering frente a cambiar particiones tradicionales?
Borrador privado · solo en este navegador04DiagnósticoLiquid clustering
Relaciona deletion vectors, predictive I/O y concurrencia por fila con el coste real de `MERGE`, `UPDATE` y `DELETE`.
+
Liquid clustering
Relaciona deletion vectors, predictive I/O y concurrencia por fila con el coste real de `MERGE`, `UPDATE` y `DELETE`.
- Objetivo
- Relaciona deletion vectors, predictive I/O y concurrencia por fila con el coste real de `MERGE`, `UPDATE` y `DELETE`.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m23
Sin deletion vectors, modificar pocas filas puede obligar a reescribir archivos Parquet completos. Con la característica activada, Delta registra qué filas están lógicamente eliminadas y difiere la reescritura física. Photon puede usar predictive I/O para acelerar actualizaciones y lecturas compatibles; el protocolo de tabla se eleva, por lo que todos los clientes externos deben soportarlo.
Los vectores no eliminan mantenimiento: operaciones posteriores materializan cambios cuando conviene, y `VACUUM` sigue gobernado por retención. También habilitan row-level concurrency en tablas elegibles, reduciendo conflictos entre escrituras sobre filas distintas. Desactivarlos por costumbre puede perder concurrencia; activarlos sin inventariar lectores externos puede romper interoperabilidad.
Modelo mental
Una deletion vector es una capa de indirection entre el archivo físico y la versión lógica visible de la tabla. En vez de reescribir un Parquet completo para cambiar unas pocas filas, la transacción registra qué posiciones quedan eliminadas o sustituidas; las lecturas consultan esa marca y reconstruyen el estado actual. Photon puede aprovechar este mecanismo para predictive I/O en UPDATE, DELETE y MERGE, y Delta puede habilitar concurrencia a nivel de fila en configuraciones compatibles. El ahorro de escritura desplaza parte del trabajo a lectura y mantenimiento posterior. Los bytes antiguos no desaparecen inmediatamente: REORG y VACUUM, con retención segura, materializan y purgan cuando corresponde.
Metadato que identifica posiciones de filas lógicamente eliminadas sin reescribir inmediatamente su archivo.
Reduce write amplification en cambios selectivos y habilita optimizaciones y concurrencia compatibles.Capacidad de resolver conflictos de escrituras sobre filas distintas en lugar de todo el archivo.
Mejora throughput de MERGE, UPDATE y DELETE concurrentes cuando se cumplen los requisitos de tabla.Reescritura y eliminación posterior de archivos que aún contienen bytes de filas lógicamente borradas.
Una eliminación lógica rápida no satisface por sí sola requisitos de borrado físico o reducción de almacenamiento.ALTER TABLE prod.silver.customers
SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
DESCRIBE DETAIL prod.silver.customers;
DELETE FROM prod.silver.customers
WHERE deletion_requested_at < current_date() - INTERVAL 30 DAYS;Revisa `tableFeatures` en `DESCRIBE DETAIL` y valida previamente cada motor externo que accede a la tabla.
Puntos clave
- Deletion vectors evitan reescribir inmediatamente archivos completos por cambios de pocas filas.
- Comprueba compatibilidad de protocolo de todos los lectores y escritores.
- Predictive I/O para updates requiere Photon y usa deletion vectors.
Evita
- Activar una característica de protocolo sin probar consumidores Delta externos.
- Confundir borrado lógico inmediato con eliminación física segura de archivos.
Recuerdo activo
¿Por qué `DELETE` con deletion vectors no significa que el archivo antiguo desaparezca inmediatamente?
Borrador privado · solo en este navegador05Decisión de diseñoDeletion vectors y predictive optimization
Delega `OPTIMIZE`, `VACUUM` y `ANALYZE` a predictive optimization cuando la tabla administrada y su gobierno lo permiten.
+
Deletion vectors y predictive optimization
Delega `OPTIMIZE`, `VACUUM` y `ANALYZE` a predictive optimization cuando la tabla administrada y su gobierno lo permiten.
- Objetivo
- Delega `OPTIMIZE`, `VACUUM` y `ANALYZE` a predictive optimization cuando la tabla administrada y su gobierno lo permiten.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m23
Predictive optimization observa tablas administradas por Unity Catalog y ejecuta mantenimiento donde estima beneficio: compacta y aplica clustering con `OPTIMIZE`, elimina archivos no referenciados con `VACUUM` y mantiene estadísticas mediante `ANALYZE`. Puede habilitarse en cuenta, catálogo, esquema o tabla, con herencia; las tablas externas quedan bajo responsabilidad del propietario.
Automatizar no significa perder control. Revisa la propiedad efectiva con `DESCRIBE ... EXTENDED`, el historial de operaciones y el coste atribuido a `PREDICTIVE_OPTIMIZATION` en `system.billing.usage`. Evita jobs cron que ejecutan `OPTIMIZE` sobre todas las tablas sin observar necesidad: compiten con la automatización y pueden gastar más que el beneficio obtenido.
Modelo mental
Predictive optimization convierte el mantenimiento de tablas administradas por Unity Catalog en un bucle de control gestionado. La plataforma observa actividad y decide cuándo ejecutar OPTIMIZE, VACUUM y ANALYZE para mejorar layout, retirar archivos no referenciados y mantener estadísticas, en vez de exigir calendarios idénticos para miles de tablas. No es un botón que elimina responsabilidad: sólo opera sobre objetos elegibles, consume recursos serverless y debe convivir con retención, lectores y políticas. Su ventaja es ajustar frecuencia a la necesidad real. El ingeniero conserva el contrato: habilitación, observabilidad, compatibilidad, excepciones y retirada de jobs manuales que duplicarían trabajo o competirían con el servicio.
Tabla gobernada por Unity Catalog cuya propiedad y características permiten mantenimiento automático por la plataforma.
Predictive optimization no es una solución universal para tablas externas o configuraciones incompatibles.Operación que recopila estadísticas utilizadas por el optimizador para estimar tamaños y cardinalidades.
Mejora decisiones de join y planificación; estadísticas obsoletas pueden producir planes frágiles.Ciclo que observa uso, ejecuta optimización y vuelve a medir el estado de la tabla.
Adapta frecuencia a actividad real en lugar de aplicar calendarios fijos a todas las tablas.ALTER CATALOG prod ENABLE PREDICTIVE OPTIMIZATION;
DESCRIBE CATALOG EXTENDED prod;
DESCRIBE TABLE EXTENDED prod.gold.orders;
SELECT operation, operationParameters, operationMetrics, timestamp
FROM (DESCRIBE HISTORY prod.gold.orders)
ORDER BY timestamp DESC
LIMIT 20;La herencia no anula un `DISABLE` explícito en un hijo; verifica la configuración efectiva antes de diagnosticar ausencia de mantenimiento.
Puntos clave
- Sólo tablas administradas elegibles reciben predictive optimization.
- La configuración hereda desde cuenta, catálogo y esquema salvo override explícito.
- Audita tanto beneficio como consumo de las operaciones automáticas.
Evita
- Asumir que una tabla externa recibe mantenimiento automático porque está registrada en Unity Catalog.
- Conservar un job global de `OPTIMIZE` y `VACUUM` sin comprobar si duplica predictive optimization.
Recuerdo activo