El Acantilado de Rendimiento en Tablas Monolíticas y Particionamiento Automático en Chunks (Hypertables) (50 min)
El Acantilado de Rendimiento en Tablas Monolíticas y Particionamiento Automático en Chunks (Hypertables)
1. Por Qué el Throughput de Inserción Cae un 90% Cuando los Índices Superan la RAM
En una tabla relacional única de $2\text{ TB}$ con índices compuestos sobre (device_id, ts) y (metric_type, ts), aunque las inserciones van al final del eje temporal, las páginas hoja de los índices secundarios para millones de device_id distintos están dispersas en un árbol B+ de $400\text{ GB}$. Cuando el conjunto de trabajo de los índices supera shared_buffers, cada INSERT provoca Page Swapping aleatorio en disco.
flowchart LR
ING["Ingesta 250,000 métricas/seg"] --> HT["Hypertable (Abstracción Lógica Única)"]
HT --> C_HOT["Chunk Activo Hoy (100% de sus índices B-Tree caben en RAM)"]
HT --> C_WARM["Chunk Ayer (Congelado y Comprimido Columnar 94% ahorro)"]
HT --> C_COLD["Chunk > 30 días (Tiered a Object Storage S3 Parquet)"]
2. Regla de Dimensionamiento de chunk_time_interval
El intervalo temporal de cada Chunk en TimescaleDB debe dimensionarse de modo que todos los índices de los chunks activos simultáneamente ocupen como máximo el $25\%$ de la memoria RAM física del servidor, garantizando que el $100\%$ de la ingesta opere en memoria sin I/O aleatorio de lectura.