As consultas pequenas funcionan, as grandes fallan: cal é o tamaño de paquete?
Os paquetes do controlador de SQL Server, os límites de mensaxe de MySQL e a MTU dun camiño IP son unidades distintas. Un fallo dependente do tamaño non as fai intercambiables.
As consultas pequenas volven, as grandes colganse ou caen, e o primeiro instinto é que algo vai mal co tamaño do paquete. Ese instinto adoita ser correcto e case sempre apunta á capa equivocada. Tres axustes comparten a palabra paquete e miden tres cousas sen relación: a empaquetaxe de transporte dun controlador de base de datos, o límite de mensaxes dun servidor de base de datos e a unidade máxima de transmisión do camiño IP. Axustar un para arranxar un síntoma causado por outro é como un problema de cinco minutos se converte nunha semana de axustes. A orde de abaixo é a que menos tempo me custou.
Tres capas, unha palabra compartida
Cada fila de abaixo é unha unidade distinta cun propietario distinto, e non se pode razoar sobre ningunha a partir das demais. Unha mensaxe de base de datos pode abranguer moitos segmentos TCP e moitos paquetes IP, así que aumentar o seu tamaño permitido non ensancha o camiño, e reducir un axuste do controlador non é a mesma operación que cambiar a MTU dunha interface. A palabra aparece en tres ficheiros de configuración diferentes, por iso buscala devolve tres respostas sen relación. Le primeiro o texto do erro e despois decide que ficheiro 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 que capa pertence a operación que falla antes de abrir un ficheiro de configuración. O texto do erro adoita dicilo, e o texto do erro é a parte que a xente salta.
Identifica o provedor antes de cambiar o seu axuste
Para SQL Server, anota a aplicación, o nome do controlador ou provedor, a versión e a configuración efectiva da conexión. Un script de diagnóstico e unha aplicación de escritorio poden chegar ao mesmo servidor mediante provedores distintos, así que un axuste que axuda a un non demostra nada sobre o outro. Os valores predeterminados dos provedores difiren, e un campo da cadea de conexión cun nome parecido non é proba de que todos os provedores o interpreten igual.
Non cambies un controlador mantido por un antigo só porque unha solución antiga usaba a súa sintaxe. A documentación actual desaconsella o desenvolvemento novo sobre eses compoñentes máis antigos, e herdarlle as limitacións é un mal intercambio por un só axuste.
O rexeitamento dunha mensaxe non é unha parada do camiño
En MySQL 8.4, a documentación dos paquetes de comunicación describe o rexeitamento dunha sentenza, fila ou evento de rexistro binario demasiado grande fronte ao límite aplicable, e tanto o límite do cliente como o do servidor poden importar. Iso é un rexeitamento na capa de base de datos, non unha afirmación de que a rede deba transportar un paquete IP xigantesco. Le o erro real e a forma da mensaxe problemática: un resultado grande feito de moitas filas pequenas é un caso distinto dunha soa fila enorme, e fallan de xeito distinto.
As instalacións de MariaDB necesitan os límites e o diagnóstico documentados da súa propia versión. Copiar os valores predeterminados de MySQL en MariaDB é adiviñar con pasos extra.
Como é de verdade a evidencia do camiño
Un problema de tamaño de camiño ten a súa propia pegada: un fallo de transporte reproducible e dependente do tamaño nunha ruta e familia de enderezos concretas, coa sobrecarga do túnel en xogo e a retroalimentación de descuberta comportándose como o camiño permite. Un tempo de espera por si só non o distingue dunha consulta lenta, dun fallo do controlador ou dun límite do servidor, e tratar un tempo de espera como proba de problemas de MTU envíate con confianza á capa equivocada.
Se probas o camiño, mantén fixos o destino, a conta e a carga de traballo para que a única variable sexa o tamaño que sondas. Unha proba na que cambiaron tres cousas non che di cal importaba.
Cambia unha variable documentada e despois anótaa
Mantén constantes o destino, a conta, o provedor e a carga de traballo, anota o valor orixinal, aplica un cambio admitido e anota o resultado. Un axuste máis pequeno que fai pasar unha proba é unha evidencia útil sobre esa pila probada; non é un óptimo universal e non establece que causou o fallo orixinal. Son afirmacións distintas, e só a primeira está respaldada por un único experimento.
Resolve o límite identificado na súa propia capa e despois anota cal era esa capa. A nota é o que impide que a seguinte persoa axuste o controlador porque o camiño era o problema.