问题描述
想要托管一个应用程序,该应用程序与数据库建立连接并进行查询。该应用程序会无限期地保持与数据库的连接,但只有在用户与前端交互时才会对数据库进行查询。用户知道 AWS Aurora Serverless 有一个“暂停计算能力”的功能,在指定的一段时间后,只会对数据库的存储费用进行计费。但如果应用程序仍然连接到数据库(即使没有进行查询),这是否会阻止数据库缩减为0个计算单元并暂停其计算能力?
解决方案
请注意以下操作可能会根据 AWS Aurora Serverless 版本和设置而有所不同。
根据回答中的信息,确实一个长时间运行的连接会阻止 AWS Aurora Serverless 触发暂停和恢复功能。但请注意,这一行为可能会根据数据库版本和设置而有所不同。以下是可能的解决方案:
方案1
根据文档所述,Aurora Serverless v1 在没有连接时可以缩减为零容量,如果您为数据库集群的容量设置启用了暂停和恢复选项。这意味着,只要有持续的连接存在,数据库将不会缩减为零容量。
然而,文档中提到了“没有活动”的概念,但并没有明确定义。这就引出了一个问题:“空闲连接是否算作活动?”目前文档中并未对此进行明确说明。
方案2
值得注意的是,当需要数据库连接时,Aurora Serverless 会自动恢复并处理连接请求。这暗示着,即使是空闲连接也会被视为“活动”。因此,尽管暂停和恢复的行为可能因版本和设置而异,但如果您希望确保数据库保持活动状态,最好的方法是在需要连接时让应用程序请求连接,从而避免数据库进入暂停状态。
请注意,根据实际情况,您可能需要在应用程序中实施一些额外的逻辑,以确保连接在需要时得到正确处理,从而避免意外的暂停和恢复行为。
方案3
无法完全确认空闲连接是否会阻止数据库的暂停,建议测试或咨询 AWS 支持获取确切的行为信息。
鉴于文档中对于“没有活动”概念的不明确说明,无法百分之百确认空闲连接是否会阻止数据库的暂停。建议在实际环境中进行测试,或者咨询 AWS 官方支持以获取关于空闲连接是否会影响暂停和恢复功能的确切行为信息。
注意事项
在进行任何设置更改之前,建议您详细阅读 AWS 官方文档,尤其是与您使用的数据库版本和设置相关的部分,以确保您了解暂停和恢复功能的行为,并能够适当地配置您的应用程序和数据库以达到预期的效果。根据文档中的描述,空闲连接可能会影响数据库的暂停行为,但确切的行为可能因多种因素而异,包括具体的数据库设置和版本。