本页面提供最佳做法和特定语言的代码示例,帮助您创建高效地使用 Cloud SQL 数据库连接的应用。
这些示例摘自 GitHub 上提供的完整 Web 应用。了解详情。
如需了解运行连接到 Cloud SQL 的示例 Web 应用的分步说明,请点击与您的环境所对应的链接:
- 从本地计算机连接快速入门
- 从 Compute Engine 连接快速入门
- 从 Cloud Run 连接快速入门
- 从 Cloud Run 函数进行连接快速入门
- 从 Google Kubernetes Engine 连接快速入门
连接池
连接池是数据库连接的缓存,共享和重复使用缓存中的连接可以缩短连接延迟时间并提高性能。当应用需要使用数据库连接时,它会从连接池中暂借一个,并在用完之后放回池中,供下次需要连接时重复使用。
使用 TCP 连接
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
注意:
- CLOUD_SQL_CONNECTION_NAME 应表示为 <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>
- 使用参数 ipTypes=PRIVATE 将强制 SocketFactory 与实例的关联专用 IP 连接
- 如需查看 pom.xml 文件的 JDBC 套接字工厂版本的要求,请点击此处。
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
使用 Unix 套接字进行连接
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
如需了解 Web 应用环境下的此代码段,请查看 GitHub 上的 README。
打开和关闭连接
使用连接池时必须正确地打开和关闭连接,以便在用完连接后始终将其放回池中。未放回(也称为“外泄”)的连接无法重复使用,会造成资源浪费并可能导致应用出现性能瓶颈。
连接数
每个数据库连接都会使用客户端和服务器端资源。此外,Cloud SQL 存在一个不能超出的总连接数量限制。创建和使用的连接越少,开销就越低,还有助于确保不超过连接数上限。
PDO 目前不提供任何功能来配置连接限制。
指数退避算法
如果您的应用尝试连接到数据库但未成功,则表示数据库可能暂时不可用。在这种情况下,发送重复的连接请求会浪费资源。最好等待一段时间后再发送其他连接请求,留出时间让数据库再次可供访问。使用指数退避算法或其他延迟机制来实现此目标。
只有在首次连接或首次从池中获取连接时,这种重试才有意义。如果错误发生在事务的中间,应用必须执行重试,并且必须从事务的开始重试。因此,即使您的池配置正确,如果连接丢失,应用仍可能会遇到错误。
database/sql 软件包目前未提供任何用于配置指数退避算法的功能。
PDO 目前未提供任何用于配置指数退避算法的功能。
连接超时
尝试连接时失败的原因有很多。可能是网络通信出了问题,也可能是数据库暂时无法响应。请确保您的应用可以正常处理连接中断或连接失败的情况。
database/sql 软件包目前不提供任何用来配置连接超时的功能。在驱动程序级别配置超时。
连接时长
限制连接的生命周期长度有助于防止被抛弃的连接不断累加。您可以使用连接池来限制连接的生命周期。
“knex”Node.js 库目前未提供任何功能来控制连接时长。
ActiveRecord 目前未提供任何功能来控制连接时长。
PDO 目前未提供任何功能来控制连接时长。
查看完整应用
要查看完整应用,请点击下面的链接。
查看 Python 编程语言的完整应用。
查看 Java 编程语言的完整应用。
查看 Node.js 编程语言的完整应用。
查看 C# 编程语言版本的完整应用。
查看 Go 编程语言版本的完整应用。
查看 Ruby 编程语言版本的完整应用。
查看 PHP 编程语言的完整应用。