Compreender o tratamento da ligação

Concluído

O MySQL suporta duas grandes categorias de conexões:

  • Curta duração - uma conexão que fica aberta por um curto período de tempo para executar uma consulta simples. A arquitetura do MySQL é projetada para esse tipo de carga de trabalho, lidando com até 80 mil conexões e desconexões por segundo.
  • Longa duração - uma conexão que está aberta "indefinidamente", como um servidor Web ou servidor de aplicativos. Nesse cenário, o cliente faz uma conexão com um servidor MySQL e, em seguida, não desconecta até que o servidor cliente é interrompido, mantendo a conexão por semanas ou meses.

O parâmetro server max_connections define o número máximo de conexões de cliente permitidas. Uma vez atingido esse máximo, o MySQL não permitirá novas conexões até que uma conexão ativa seja desconectada.

Pool de conexões e conexões persistentes

A maneira como um aplicativo gerencia conexões de banco de dados pode ter um impacto significativo no desempenho geral de um banco de dados. Deve procurar reduzir:

  • O número de vezes que as conexões são estabelecidas.
  • O tempo para estabelecer conexões em caminhos de código chave.

Para obter melhores resultados, considere usar o pool de conexões ou conexões persistentes para se conectar ao Banco de Dados do Azure para servidores MySQL.

O pool de conexões é usado para lidar com a criação, o gerenciamento e a alocação de conexões de banco de dados. Quando uma conexão de banco de dados é solicitada, ela prioriza a alocação de conexões de banco de dados ociosas existentes, em vez de criar uma nova conexão. Depois que a conexão terminar, ela é recuperada para que possa ser usada novamente em vez de ser fechada. Veja exemplos de Java para ilustrar o pool de conexões | Documentos Microsoft.

Conexões persistentes é uma ideia semelhante à do pool de conexões. As conexões persistentes substituem conexões de curta duração que normalmente são executadas dentro de 5 a 10 milissegundos por conexões de < longa duração. Essa alteração geralmente requer apenas pequenas alterações no código, mas pode fazer grandes melhorias de desempenho para cenários típicos de aplicativos. Essa abordagem evita que um novo thread de conexão seja criado para cada nova consulta, melhorando assim o desempenho.

Procedimentos armazenados de conexão

O Banco de Dados do Azure para MySQL permite que muitos parâmetros sejam exibidos e modificados no portal do Azure navegando até o servidor e a folha Parâmetros do Servidor (ou usando a CLI do Azure). Há, no entanto, duas tarefas administrativas que exigem privilégios adicionais devem ser executadas usando procedimentos armazenados. São as seguintes:

  • mysql.az_kill - equivalente à instrução KILL CONNECTION. Toma o processlist_id como parâmetro de entrada. Encerra a conexão após encerrar uma instrução que está sendo executada pela conexão.
  • mysql.az_kill_query - equivalente à instrução KILL QUERY. Toma o processlist_id como parâmetro de entrada. Encerra apenas a instrução que está sendo executada pela conexão e não encerra a conexão.

Esses procedimentos armazenados exigem privilégios de SUPER USUÁRIO.

Eficiência da ligação

Para obter o melhor desempenho, você normalmente deve usar soluções de proxy ProxySQL ou Heimdall Data Proxy para MySQL. Para obter mais informações sobre a eficiência da conexão, consulte Eficiência da conexão.