En esta página, se proporcionan prácticas recomendadas y muestras de código de lenguaje específico para ayudarte a crear aplicaciones que usan conexiones con la base de datos de Cloud SQL de manera eficiente.
Estas muestras son extractos de una aplicación web completa disponible para ti en GitHub. Obtén más información.
Para obtener instrucciones paso a paso sobre cómo ejecutar una aplicación web de muestra conectada a Cloud SQL, sigue el vínculo que corresponde a tu entorno:
- Guía de inicio rápido para conectarse desde una computadora local
- Guía de inicio rápido para conectarse desde Compute Engine
- Guía de inicio rápido para conectarse desde Cloud Run
- Guía de inicio rápido para conectarse desde funciones de Cloud Run
- Guía de inicio rápido para conectarse desde Google Kubernetes Engine
Grupos de conexiones
Un grupo de conexiones es una caché de conexiones con la base de datos que se comparten y reutilizan para mejorar la latencia y el rendimiento de la conexión. Cuando la aplicación necesita una conexión con la base de datos, toma una prestada del grupo de manera temporal; cuando la aplicación ya no usa la conexión, la devuelve al grupo para reutilizarla la próxima vez que la aplicación necesite una conexión con la base de datos.
Conexiones abiertas y cerradas
Cuando usas un grupo de conexiones, debes abrir y cerrar las conexiones de forma correcta, de modo que tus conexiones siempre vuelvan al grupo cuando hayas terminado con ellas. Las conexiones que no se devuelvan o que se “filtren” no se podrán volver a usar, lo que lleva a la pérdida de recursos y puede provocar cuellos de botella de rendimiento en la aplicación.
Python
Java
Node.js
C#
Go
Ruby
PHP
Conteo de conexiones
Cada conexión con la base de datos utiliza recursos de cliente y servidor. Además, Cloud SQL impone límites de conexión que no se pueden exceder. Mediante la creación y el uso de menos conexiones se reduce la sobrecarga y esto te ayuda a no superar el límite de conexiones.
Python
Java
Node.js
C#
Go
Ruby
PHP
Por el momento, PDO no ofrece ninguna función para configurar los límites de conexión.
Retirada exponencial
Si la aplicación intenta conectarse con la base de datos y no lo logra, es posible que la base de datos no esté disponible temporalmente. En este caso, el envío de solicitudes de conexión repetidas desperdicia recursos. Es preferible esperar antes de enviar solicitudes de conexión adicionales para permitir que se pueda acceder a la base de datos de nuevo. El uso de una retirada exponencial o de otro mecanismo de retraso logra este objetivo.
Este reintento solo tiene sentido cuando te conectas o tomas una conexión del grupo por primera vez. Si se producen errores en el medio de una transacción, la aplicación debe volver a intentarla desde el comienzo. Por lo tanto, incluso si el grupo está configurado de forma correcta, es posible que la aplicación detecte errores si se pierden las conexiones.
Python
Java
Node.js
C#
Go
Por el momento, el paquete database/sql no ofrece ninguna función para configurar la retirada exponencial.
Ruby
PHP
Por el momento, PDO no ofrece ninguna función para configurar la retirada exponencial.
Tiempo de espera de la conexión
Existen diferentes razones por las cuales un intento de conexión puede fallar. La comunicación con la red nunca se garantiza, y es posible que la base de datos no esté disponible temporalmente para responder. Asegúrate de que la aplicación gestione las conexiones dañadas o que no funcionan con facilidad.
Python
Java
Node.js
C#
Go
Por el momento, el paquete database/sql no ofrece ninguna función para configurar el tiempo de espera de la conexión. El tiempo de espera se configura a nivel de controlador.
Ruby
PHP
Duración de la conexión
Poner un límite al tiempo de actividad de conexión puede ayudar a evitar que se acumulen conexiones abandonadas. Puedes usar el grupo de conexiones para limitar el tiempo de actividad de la conexión.
Python
Java
Node.js
En la actualidad, la biblioteca de Node.js “node-mssql” no ofrece ninguna funcionalidad para controlar la duración de una conexión.
C#
Go
Ruby
Por el momento, ActiveRecord no ofrece ninguna función para controlar la duración de una conexión.
PHP
Por el momento, PDO no ofrece ninguna función para controlar la duración de una conexión.
Visualiza la aplicación completa
Para ver la aplicación completa, haz clic en el siguiente vínculo.
Python
Ver la aplicación completa para el lenguaje de programación Python.
Node.js
Ve la aplicación completa para el lenguaje de programación Node.js.
C#
Ve la solicitud completa para el lenguaje de programación C#.
Go
Visualiza la aplicación completa para el lenguaje de programación Go.
PHP
Visualiza la aplicación completa para el lenguaje de programación PHP.
¿Qué sigue?
- Obtén más información sobre IP privada.
- Obtén más información sobre las cuotas y límites de Cloud SQL y App Engine.
- Obtén más información sobre las prácticas recomendadas para trabajar con Cloud SQL.