Consultas pequenas voltam, grandes travam ou caem, e o primeiro instinto é que algo está errado com o tamanho do pacote. Esse instinto costuma estar certo e quase sempre aponta para a camada errada. Três configurações compartilham a palavra pacote e medem três coisas sem relação: o empacotamento de transporte de um driver de banco de dados, o limite de mensagens de um servidor de banco de dados e a unidade máxima de transmissão do caminho IP. Ajustar uma para corrigir um sintoma causado por outra é como um problema de cinco minutos vira uma semana de ajustes. A ordem abaixo é a que me custou menos tempo.

Três camadas, uma palavra compartilhada

Cada linha abaixo é uma unidade diferente com um dono diferente, e não se pode raciocinar sobre nenhuma a partir das outras. Uma mensagem de banco de dados pode abranger muitos segmentos TCP e muitos pacotes IP, então aumentar o tamanho permitido não alarga o caminho, e reduzir uma configuração do driver não é a mesma operação que mudar a MTU de uma interface. A palavra aparece em três arquivos de configuração diferentes, por isso procurá-la retorna três respostas sem relação. Leia primeiro o texto do erro e depois decida qual arquivo abrir.

Setting or observationUnit it describes
SQL Server client network packet settingThe provider's transport packaging for that connection
MySQL communication packet limitA database message, such as one statement, row or replication event
IP path MTUThe largest IP packet the path carries without fragmentation handling

Anote a qual camada pertence a operação que falha antes de abrir um arquivo de configuração. O texto do erro costuma dizer isso, e o texto do erro é justamente a parte que as pessoas pulam.

Identifique o provedor antes de mudar sua configuração

Para SQL Server, anote a aplicação, o nome do driver ou provedor, a versão e a configuração efetiva da conexão. Um script de diagnóstico e um aplicativo de desktop podem alcançar o mesmo servidor por provedores diferentes, então uma configuração que ajuda um não prova nada sobre o outro. Os padrões dos provedores diferem, e um campo da cadeia de conexão com nome semelhante não é prova de que cada provedor o interprete do mesmo jeito.

Não troque um driver mantido por um antigo só porque uma solução antiga usava a sintaxe dele. A documentação atual desaconselha desenvolvimento novo sobre esses componentes mais antigos, e herdar suas limitações é uma troca ruim por uma única configuração.

A rejeição de uma mensagem não é uma parada do caminho

No MySQL 8.4, a documentação dos pacotes de comunicação descreve a rejeição de uma instrução, linha ou evento de log binário grande demais frente ao limite aplicável, e tanto o limite do cliente quanto o do servidor podem importar. Isso é uma rejeição na camada de banco de dados, não a afirmação de que a rede deva transportar um pacote IP gigantesco. Leia o erro real e a forma da mensagem problemática: um resultado grande feito de muitas linhas pequenas é um caso diferente de uma única linha enorme, e eles falham de maneiras distintas.

As instalações do MariaDB precisam dos limites e do diagnóstico documentados da própria versão. Copiar os padrões do MySQL para o MariaDB é adivinhar com passos extras.

Como a evidência de caminho realmente se parece

Um problema de tamanho de caminho tem sua própria impressão digital: uma falha de transporte reproduzível e dependente de tamanho em uma rota e família de endereços específicas, com a sobrecarga do túnel em jogo e o feedback de descoberta se comportando como o caminho permite. Um tempo limite sozinho não a distingue de uma consulta lenta, de um bug do driver ou de um limite do lado do servidor, e tratar um tempo limite como prova de problemas de MTU envia você com confiança para a camada errada.

Se você testar o caminho, mantenha fixos o destino, a conta e a carga de trabalho para que a única variável seja o tamanho que você investiga. Um teste em que três coisas mudaram não diz nada sobre qual delas importava.

Mude uma variável documentada e depois registre-a

Mantenha constantes o destino, a conta, o provedor e a carga de trabalho, registre o valor original, aplique uma mudança suportada e registre o resultado. Uma configuração menor que faz um teste passar é uma evidência útil sobre essa pilha testada; não é um ótimo universal e não estabelece o que causou a falha original. São afirmações diferentes, e só a primeira é sustentada por um único experimento.

Resolva o limite identificado na própria camada e depois anote qual camada era. A nota é o que impede a próxima pessoa de ajustar o driver porque o caminho era o problema.

Artigos relacionados