Este artículo explora la matemática detrás de la compresión de datos en sistemas de bases de datos, desentrañando por qué y cómo se utiliza, y cómo afecta el rendimiento. Tradicionalmente, el rendimiento de una base de datos se ve limitado por el ancho de banda de I/O, la potencia de la CPU y la memoria. La compresión ofrece una forma de equilibrar estos recursos, intercambiando ciclos de CPU por un menor uso de ancho de banda de I/O.
La clave está en entender el 'punto de equilibrio' (breakeven bandwidth). Si el ancho de banda disponible es bajo (como en una conexión de red), la compresión puede mejorar significativamente la latencia, ya que la reducción en la cantidad de datos a transferir supera el costo de la compresión y descompresión. Sin embargo, si el ancho de banda es alto (como con un disco NVMe rápido), la compresión puede ser contraproducente, ya que el tiempo de compresión/descompresión podría ser mayor que el tiempo de transferencia sin comprimir.
El artículo introduce el concepto de 'ancho de banda lógico', que representa el rendimiento efectivo después de considerar la compresión. Un ratio de compresión más alto implica un mayor ancho de banda lógico. Sin embargo, esto solo es beneficioso si la CPU puede manejar la carga de compresión/descompresión. Se introduce la 'tasa de transferencia' (throughput) de compresión (θ) para medir la cantidad de datos que una CPU puede comprimir por unidad de tiempo.
Además, el artículo considera el costo económico de la compresión, especialmente en entornos de nube donde existen tarifas por transferencia de datos (egress/ingress). Un alto ratio de compresión reduce los costos de transferencia, pero aumenta el consumo de CPU, creando un equilibrio que debe optimizarse. Finalmente, se destaca que, aunque la compresión agresiva puede ser óptima para el rendimiento general, la latencia de la descompresión en la ruta crítica de la consulta puede ser un factor limitante, sugiriendo que un nivel de compresión más conservador puede ser preferible en ciertos casos, especialmente en cargas de trabajo de escritura única y lectura múltiple.
