扩展 Azure SQL Database 时究竟发生了什么... 笔记

扩展 Azure SQL Database 时究竟发生了什么?如何监控长时间运行的扩展操作

Azure SQL Database 提供无缝的计算扩展,无需管理基础设施。扩展操作不仅涉及调整 vCores,还包括部署新计算资源、准备数据、切换连接以及清理旧环境。即使两个数据库之间的变更看似相同,其扩展所需时间也可能存在显著差异。数据库大小是关键因素,因为较大的数据库需要在目标计算资源上进行更多的数据准备。数据库上的活跃工作负载也会影响扩展持续时间,因为在目标环境准备期间数据库保持在线。切换时刻存在的长运行事务会延迟连接切换并延长操作时间。Azure SQL 内部的资源可用性也可能导致操作进入待处理状态,从而增加总体耗时。可以使用 Azure PowerShell 中的 Get-AzSqlDatabaseActivity 和 Get-AzSqlDatabase cmdlet 来监控扩展操作。sys.dm_operation_status DMV 提供了操作状态(如 PENDING 和 IN_PROGRESS)的 SQL 端视图。sys.dm_operation_status 中的 PercentComplete 列通常指示操作状态,而非扩展的细粒度进度。在扩展期间,数据库保持可用,连接继续指向原始计算资源,直到执行切换。切换本身会导致短暂中断,要求应用程序实现重试逻辑。扩展操作缓慢并不一定意味着失败;它可能正在合法地处理复杂的准备阶段。故障排查涉及验证确切变更、比较数据库大小、检查工作负载活动,并检查长运行事务。