Las consultas pequeñas funcionan, las grandes fallan: ¿qué tamaño de paquete es?
Los paquetes del controlador de SQL Server, los límites de mensaje de MySQL y la MTU de una ruta IP son unidades distintas. Un fallo dependiente del tamaño no las hace intercambiables.
Las consultas pequeñas devuelven, las grandes se cuelgan o caen, y el primer instinto es que algo va mal con el tamaño del paquete. Ese instinto suele ser correcto y casi siempre apunta a la capa equivocada. Tres ajustes comparten la palabra paquete y miden tres cosas sin relación: el empaquetado de transporte de un controlador de base de datos, el límite de mensajes de un servidor de base de datos y la unidad máxima de transmisión de la ruta IP. Ajustar uno para arreglar un síntoma causado por otro es cómo un problema de cinco minutos se convierte en una semana de ajustes. El orden de abajo es el que menos tiempo me ha costado.
Tres capas, una palabra compartida
Cada fila de abajo es una unidad distinta con un propietario distinto, y no se puede razonar sobre ninguna a partir de las demás. Un mensaje de base de datos puede abarcar muchos segmentos TCP y muchos paquetes IP, así que aumentar su tamaño permitido no ensancha la ruta, y reducir un ajuste del controlador no es la misma operación que cambiar la MTU de una interfaz. La palabra aparece en tres archivos de configuración diferentes, por eso buscarla devuelve tres respuestas sin relación. Lee primero el texto del error y después decide qué archivo abrir.
| Setting or observation | Unit it describes |
|---|---|
| SQL Server client network packet setting | The provider's transport packaging for that connection |
| MySQL communication packet limit | A database message, such as one statement, row or replication event |
| IP path MTU | The largest IP packet the path carries without fragmentation handling |
Anota a qué capa pertenece la operación que falla antes de abrir un archivo de configuración. El texto del error suele decirlo, y el texto del error es la parte que la gente se salta.
Identifica el proveedor antes de cambiar su ajuste
Para SQL Server, anota la aplicación, el nombre del controlador o proveedor, la versión y la configuración efectiva de la conexión. Un script de diagnóstico y una aplicación de escritorio pueden llegar al mismo servidor mediante proveedores distintos, así que un ajuste que ayuda a uno no demuestra nada sobre el otro. Los valores predeterminados de los proveedores difieren, y un campo de la cadena de conexión con un nombre parecido no es prueba de que todos los proveedores lo interpreten igual.
No cambies un controlador mantenido por uno antiguo solo porque una solución antigua usaba su sintaxis. La documentación actual desaconseja el desarrollo nuevo sobre esos componentes más antiguos, y heredar sus limitaciones es un mal intercambio por un solo ajuste.
El rechazo de un mensaje no es una parada de la ruta
En MySQL 8.4, la documentación de los paquetes de comunicación describe el rechazo de una sentencia, fila o evento de registro binario demasiado grande frente al límite aplicable, y tanto el límite del cliente como el del servidor pueden importar. Eso es un rechazo en la capa de base de datos, no una afirmación de que la red deba transportar un paquete IP gigantesco. Lee el error real y la forma del mensaje problemático: un resultado grande hecho de muchas filas pequeñas es un caso distinto de una sola fila enorme, y fallan de manera distinta.
Las instalaciones de MariaDB necesitan los límites y el diagnóstico documentados de su propia versión. Copiar los valores predeterminados de MySQL en MariaDB es adivinar con pasos extra.
Cómo es de verdad la evidencia de la ruta
Un problema de tamaño de ruta tiene su propia huella: un fallo de transporte reproducible y dependiente del tamaño en una ruta y familia de direcciones concretas, con la sobrecarga del túnel en juego y la retroalimentación de descubrimiento comportándose como la ruta permite. Un tiempo de espera por sí solo no lo distingue de una consulta lenta, de un fallo del controlador o de un límite del servidor, y tratar un tiempo de espera como prueba de problemas de MTU te envía con confianza a la capa equivocada.
Si pruebas la ruta, mantén fijos el destino, la cuenta y la carga de trabajo para que la única variable sea el tamaño que sondeas. Una prueba en la que cambiaron tres cosas no te dice cuál importaba.
Cambia una variable documentada y luego anótala
Mantén constantes el destino, la cuenta, el proveedor y la carga de trabajo, anota el valor original, aplica un cambio admitido y anota el resultado. Un ajuste más pequeño que hace pasar una prueba es una evidencia útil sobre esa pila probada; no es un óptimo universal y no establece qué causó el fallo original. Son afirmaciones distintas, y solo la primera está respaldada por un único experimento.
Resuelve el límite identificado en su propia capa y luego anota cuál era esa capa. La nota es lo que impide que la siguiente persona ajuste el controlador porque la ruta era el problema.