Dedicated SQL Pool en Synapse: distribución de datos y optimización
João Barros
19 de February de 2025
1 min de lectura
El Dedicated SQL Pool (anteriormente SQL DW) usa MPP (Massively Parallel Processing) con 60 nodos de distribución. Cómo distribuye cada tabla entre los 60 nodos define directamente el rendimiento de joins y agregaciones.
Tipos de distribución
HASH — distribuye filas por hash de una columna
✓ Ideal para tablas de hechos grandes
✗ Pésimo si la columna tiene pocos valores únicos (data skew)
ROUND_ROBIN — distribuye uniformemente sin criterio
✓ Bueno para tablas de staging temporales
✗ Causa movimiento de datos en joins
REPLICATE — copia la tabla entera en cada nodo
✓ Ideal para dimensiones pequeñas (< 2GB)
✗ Alto coste de escritura y actualización
Crear tablas con la distribución adecuada
-- Tabla de hechos grande → HASH por la clave de join más frecuente
CREATE TABLE dbo.FactVentas (
id_venta BIGINT NOT NULL,
id_cliente INT NOT NULL,
fecha_venta DATE NOT NULL,
ingresos DECIMAL(18,2)NOT NULL
)
WITH (
DISTRIBUTION = HASH(id_cliente),
CLUSTERED COLUMNSTORE INDEX
);
-- Dimensión pequeña → REPLICATE
CREATE TABLE dbo.DimProducto (
id_producto INT NOT NULL,
nombre VARCHAR(200)NOT NULL,
categoria VARCHAR(100)
)
WITH (
DISTRIBUTION = REPLICATE,
CLUSTERED COLUMNSTORE INDEX
);
Diagnosticar data skew
-- Ver la distribución de filas entre los 60 nodos
DBCC PDW_SHOWSPACEUSED('dbo.FactVentas');
-- Si un nodo tiene 10x más filas → mala elección de columna de hash
-- Solución: cambiar a otra columna o usar ROUND_ROBIN + pre-agrupamiento
Statistics y cache de resultados
-- Crear statistics (esencial para el optimizador)
CREATE STATISTICS stats_cliente ON dbo.FactVentas(id_cliente);
-- Activar result set caching (consultas idénticas = coste cero)
ALTER DATABASE SynapseDW SET RESULT_SET_CACHING ON;
Conclusión
En el Dedicated SQL Pool, la arquitectura viene primero: distribuya los hechos por hash en la columna de join, replique las dimensiones pequeñas y cree statistics en todas las columnas usadas en joins y filtros. Estas tres reglas resuelven el 80% de los problemas de rendimiento.