La "Caja Negra"
al Descubierto
SQL Server no es mágico. Es un software complejo que obedece las leyes de la física (latencia de disco) y de la computación (páginas de memoria).
Entender qué pasa cuando presionas F5 es lo que separa a un usuario de SQL de un Ingeniero de Datos Senior.
1. La Unidad Atómica: La Página
Size: 8192 Bytes (8KB)
Olvida el concepto de "fila" por un momento. El motor de almacenamiento no lee filas, lee Páginas. Es el bloque más pequeño de I/O.
Anatomía Interna
-
Header96 Bytes Fijos Contiene metadatos críticos: `PageID`, `ObjectId` (a qué tabla pertenece), y punteros `PrevPage` / `NextPage` (lista doblemente enlazada).
-
Body8060 Bytes (Max) Aquí viven tus datos. Las filas se apilan una tras otra. Si una fila no cabe en el espacio restante, se mueve a una página nueva.
-
TailSlot Array (Variable) Crece desde el final de la página hacia arriba. Es un índice inverso: el Slot 0 apunta al byte donde empieza la Fila 0.
El Enemigo: Page Splits
Si intentas insertar una fila en una página llena (ej: insertando un ID=5 entre el 4 y el 6), SQL Server debe romper la página en dos, mover la mitad de los datos y actualizar punteros.
Consecuencia: I/O Masivo + Fragmentación Lógica (Páginas al 50% de uso).
Diagrama interactivo: Pasa el mouse sobre las filas verdes
2. Extents y Archivos Físicos
Allocation Unit: 64KB
Las páginas no flotan en el vacío. Se agrupan en Extents (8 páginas = 64KB) para optimizar la lectura secuencial (Read-Ahead).
Primary (.mdf)
Metadata & Data
El cerebro. Contiene el catálogo del sistema y (usualmente) los datos de usuario si no hay NDFs.
Secondary (.ndf)
Partitioning
Archivos opcionales para distribuir datos en diferentes discos físicos (Filegroups).
Log (.ldf)
Write-Ahead Log
Circular. Registra CADA transacción antes de que toque los datos. Vital para recuperación (ACID).
3. Buffer Pool: La Sala de Espera
RAM Speed vs Disk Latency
Lifecycle de una Consulta SELECT
Tu objetivo: Buffer Cache Hit Ratio > 99%.
Causa bloqueos de espera (PAGEIOLATCH).
4. B-Trees: Navegación Inteligente
Balanced Trees O(log N)
Los índices no son listas planas; son pirámides. El motor "baja" por los niveles del árbol comparando valores hasta llegar a la hoja que contiene el dato.
Clustered vs Non-Clustered
En el diagrama de arriba: Si es un Clustered Index, las cajas verdes (Hojas) contienen TODA LA FILA de datos.
Si es un Non-Clustered Index, las cajas verdes solo contienen un puntero (como el número de página de un libro) que te dice dónde buscar el resto de la fila.
El Desafío: NYC Taxi Data
Hemos cubierto la teoría. Ahora te toca optimizar 3 millones de registros reales. Elige tu misión.
Arquitectura & Ingesta
Carga masiva con BULK INSERT. Aprende cómo el mal tipado de datos explota tu almacenamiento y destruye el Buffer Pool.
Estrategia de Índices
Domina la batalla Seek vs Scan. Diseña índices "Covering" para eliminar los costosos Key Lookups y acelerar consultas un 99%.
El Taxi Fantasma
Resuelve un fraude en tiempo real. Un problema de SARGability que colapsa el servidor. Solo para expertos.