Un ingeniero de MariaDB relata cómo una conversación informal con Monty Widenius en la conferencia Meet Magento Czech, en agosto, derivó en un prototipo que aplica el algoritmo B-link a los splits de página del árbol B+ de InnoDB. La idea inicial se esbozó en el reverso de un envoltorio de chocolate negro, pero acabó convirtiéndose en una implementación funcional sobre MariaDB. La propuesta técnica de Zhao Song sobre splits concurrentes estilo B-link sirvió como base arquitectónica del proyecto.
El problema que aborda es bien conocido: cuando una hoja del índice está llena, InnoDB debe dividirla, actualizar enlaces entre hermanos e insertar un puntero en el nodo padre, todo bajo un cerrojo que abarca todo el índice. Esto serializa splits no relacionados entre sí y limita el rendimiento en cargas con muchas inserciones. La técnica B-link hace visible el split antes de instalar el puntero en el padre, lo que permite que búsquedas y otras escrituras avancen en paralelo.
La implementación requirió cambios coordinados en la representación de páginas, la navegación del cursor, las mini-transacciones por nivel, la gestión de cerrojos y la preasignación de páginas, entre otros. Los índices B-link se marcan con un flag persistente y se crean solo si la variable innodb_blink_enabled está activa; los índices existentes no se convierten. El benchmark, con 2,5 millones de filas precargadas y 400.000 inserciones medidas en 32 hilos, arrojó 102.838 inserciones por segundo frente a las 19.736 de MariaDB sin cambios, una mejora de 5,23 veces. El artículo detalla además la metodología, las pruebas de corrección y la recuperación ante splits incompletos.
