Veja nesta página práticas recomendadas e amostras de código específicas de cada linguagem para ajudar você a criar aplicativos que usam conexões de bancos de dados SQL de modo eficiente.
Essas amostras são trechos de um aplicativo completo do App Engine disponível para você no GitHub. Saiba mais.
Pools de conexões
Um pool de conexões é um cache de conexões de banco de dados que são compartilhadas e reutilizadas para melhorar a latência e o desempenho da conexão. Quando seu aplicativo precisa de uma conexão de banco de dados, ele pega uma emprestada do pool temporariamente. Assim que ele termina de usar a conexão, ela é devolvida ao pool para ser reutilizada da próxima vez em que o aplicativo precisar de uma conexão de banco de dados.
Como iniciar e encerrar conexões
Ao usar um pool de conexões, é necessário iniciá-las e encerrá-las corretamente. Assim, as conexões sempre serão retornadas ao pool quando você terminar de usá-las. Conexões não retornadas ou "vazadas" não são reutilizadas, o que gera desperdício de recursos e potenciais gargalos de desempenho para seu aplicativo.
Python
Java
Node.js
C#
Go
Ruby
PHP
Número de conexões
Cada conexão de banco de dados usa recursos do lado do cliente e do servidor. Além disso, o Cloud SQL aplica limites de conexão gerais que não podem ser excedidos. Criar e usar menos conexões reduz a sobrecarga e ajuda você a permanecer abaixo do limite de conexões.
Python
Java
Node.js
C#
Go
Ruby
PHP
No momento, o PDO não oferece nenhuma funcionalidade para configurar limites de conexão.
Espera exponencial
Se o aplicativo tentar se conectar ao banco de dados e não conseguir, o banco de dados poderá estar temporariamente indisponível. Nesse caso, enviar muitas solicitações de conexão simultâneas pode desperdiçar recursos adicionais do banco de dados e aumentar o tempo necessário para a recuperação. O uso da espera exponencial impede que o aplicativo envie um número sem resposta de solicitações de conexão quando não puder se conectar ao banco de dados.
Essa nova tentativa só faz sentido em uma primeira conexão ou ao capturar uma conexão do pool pela primeira vez. Se ocorrerem erros no meio de uma transação, o aplicativo precisará tentar de novo e repetir a transação desde o início Portanto, mesmo que seu pool esteja configurado corretamente, o aplicativo ainda poderá ver erros se as conexões forem perdidas.
Python
Java
Node.js
C#
Go
No momento, o pacote database/sql não oferece nenhuma funcionalidade para configurar a espera exponencial.
Ruby
PHP
No momento, o PDO não oferece nenhuma funcionalidade para configurar a espera exponencial.
Tempo limite de conexão
Existem muitas razões para a falha de uma tentativa de conexão. A comunicação de rede nunca é garantida, e pode ser que o banco de dados esteja temporariamente indisponível. Verifique se o aplicativo é capaz de lidar com conexões interrompidas ou malsucedidas sem gerar erros.
Python
Java
Node.js
C#
Go
No momento, o pacote database/sql não oferece nenhuma função para configurar o tempo limite de conexão. O tempo limite é configurado no nível do driver.
Ruby
PHP
Como encerrar uma conexão
Um usuário mysql com o privilégio PROCESS
no Cloud SQL pode
executar uma instrução KILL
em uma conexão de qualquer outro usuário mysql
(exceto usuários administrativos do Cloud SQL).
É possível listar as conexões com uma instância usando o cliente mysql e
executando o comando SHOW PROCESSLIST
. Use o Id
para encerrar a conexão.
Exemplo:
mysql> SHOW PROCESSLIST;
mysql> KILL 6;
Duração da conexão
Limitar o tempo de vida de uma conexão pode ajudar a impedir o acúmulo de conexões abandonadas. Use o pool de conexões para limitar a vida útil da sua conexão.
Python
Java
Node.js
Atualmente, a biblioteca 'mysql' do Node.js não oferece nenhuma funcionalidade para controlar a duração de uma conexão.
C#
Go
Ruby
No momento, o ActiveRecord não oferece nenhuma função para controlar a duração de uma conexão.
PHP
No momento, o PDO não oferece nenhuma função para controlar a duração de uma conexão.
Ver o aplicativo completo
Para ver o aplicativo completo, clique no link abaixo.
Python
Veja o aplicativo completo da linguagem de programação Python.
Java
Ver o aplicativo completo da linguagem de programação Java.
Node.js
Veja o aplicativo completo da linguagem de programação Node.js.
C#
Veja o aplicativo completo da linguagem de programação C#.
Go
Veja o aplicativo completo da linguagem de programação Go.
Ruby
Veja o aplicativo completoda linguagem de programação Ruby.
PHP
Veja o aplicativo completo da linguagem de programação PHP.
A seguir
- Saiba mais sobre IP privado.
- Saiba mais sobre cotas e limites do Cloud SQL e o App Engine.
- Saiba mais sobre as práticas recomendadas para trabalhar com o Cloud SQL.
- Saiba mais sobre como se conectar de um aplicativo externo.