Confira nesta página as práticas recomendadas e exemplos de código específicos de cada idioma para ajudar você a criar aplicativos que usam conexões de bancos de dados do Cloud SQL de modo eficiente.
Estas amostras são trechos de um aplicativo da Web completo disponível no GitHub. Saiba mais.
Para instruções passo a passo sobre como executar um aplicativo da Web de amostra conectado ao Cloud SQL, acesse o link do seu ambiente:
- Guia de início rápido para se conectar do seu computador local
- Guia de início rápido para se conectar no Compute Engine
- Guia de início rápido para se conectar no Cloud Run
- Guia de início rápido para se conectar usando o Cloud Run functions
- Guia de início rápido para se conectar no Google Kubernetes Engine
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.
Abrir e fechar 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, o envio de solicitações de conexão repetidas desperdiça recursos. É preferível aguardar antes de enviar solicitações adicionais de conexão para permitir que o banco de dados se torne acessível novamente. O uso de uma espera exponencial ou outro mecanismo de atraso atinge essa meta.
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
Encerrar uma conexão
Os usuários com o privilégio PROCESS
no Cloud SQL podem listar conexões que eles
não gerenciam. No MySQL 5.7.x, os usuários precisam ter o privilégio SUPER
e, no
MySQL 8.0.x, os usuários precisam ter o privilégio CONNECTION_ADMIN
para executar uma
instrução KILL
nessas conexões. A instrução KILL
encerra a
conexão de qualquer outro usuário mysql (exceto usuários administrativos
do Cloud SQL). Usuários sem esses privilégios só podem listar e encerrar as conexões
que eles gerenciam.
É 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.
Por 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.