Arquitectura Orientada a Disco
La base de datos no escribe ni lee directamente del disco. Usa dos componentes especializados: el Buffer Pool (memoria intermedia en RAM) y el Disk Manager (gestor de lectura/escritura de páginas). El motor de consultas solo habla con el Buffer Pool; nunca ve el disco.
Página: Unidad mínima de I/O de la BD — los datos se leen y escriben en bloques completos de 4–16 KB, nunca fila por fila. Dentro, cada página agrupa varias filas de una misma tabla.
Disk Manager
Es la capa que traduce Page IDs a posiciones físicas en disco y se encarga de leer y escribir páginas completas cuando el Buffer Pool se lo pide.
Buffer Pool
Área de memoria RAM donde la BD mantiene copias de páginas ya leídas desde disco. Su función es evitar que cada consulta tenga que bajar a disco.
Mecanismo:
- El motor de consultas solicita una página
- Buffer Pool busca la página en su caché
- Cache hit: la página ya está en RAM → respuesta inmediata (nanosegundos)
- Cache miss: la página no está → Disk Manager la trae desde disco (microsegundos a milisegundos)
El Buffer Pool tiene tamaño fijo definido por configuración. Cuando está lleno y llega una página nueva, debe desalojar una existente usando una política de reemplazo que decide qué página quitar.
Consecuencia: 1 byte consultado → 8 KB transferidos. Menos columnas leídas, menos páginas visitadas.
Qué cambia según el tamaño del buffer pool y la página
| Recurso | Ventaja | Desventaja |
|---|---|---|
| Buffer Pool grande | Más cache hits, menos I/O a disco | Consume RAM que podría usar el SO u otros procesos |
| Buffer Pool chico | Deja más RAM disponible | Más cache misses, consultas más lentas |
| Página grande (16 KB) | Más datos por I/O, mejor throughput secuencial | Desperdicio si las filas son chicas y los accesos son puntuales |
| Página chica (4 KB) | Menos desperdicio en accesos individuales | Más operaciones de I/O para el mismo volumen |
Errores frecuentes
Error: agrandar el buffer pool siempre acelera las consultas.
Solo si hay cache misses. Si el working set ya entra en el buffer pool, agregar más RAM no mejora el rendimiento.
Error: con SSD el buffer pool ya no es necesario.
Falso. La RAM sigue siendo ~1000x más rápida que un SSD en latencia. El buffer pool evita pagar esa diferencia en cada acceso.