监控Azure SQL 数据库的无服务器计算层

适用于:Azure SQL 数据库

你可以查看无服务器数据库的暂停和继续事件历史。

已使用和计费的资源

无服务器数据库的资源包括应用包、SQL 逻辑服务器和用户资源池实体。

应用包

应用包是数据库的最外层资源管理边界,无论数据库是处于无服务器层还是配置计算层。 该应用包包含 SQL 数据库引擎 和外部服务如全文搜索,这些服务共同涵盖了 Azure SQL 数据库 使用的所有用户和系统资源。 SQL 数据库引擎 通常主导整个应用包的资源利用率。

用户资源池

用户资源池是数据库内层的资源管理边界,无论数据库位于无服务器计算层中还是预配的计算层中。 用户资源池对由DDL(CREATEALTER)和DML(INSERTUPDATE、、DELETEMERGESELECT)查询产生的用户工作负载的CPU和IO范围进行了范围。 这些查询通常表示应用包中最重要的使用率比例。

指标

下表列出了用于监视无服务器数据库(包括任何异地副本)的应用包和用户资源池的资源使用情况指标:

实体 Metric Description 单位
应用包 app_cpu_percent 应用使用的 vCore 数相对于应用允许的最大 vCore 数的百分比。 对于无服务器超大规模,此指标针对所有主要副本、命名副本和异地副本公开。 百分比
应用包 app_cpu_billed 报告期内收取的应用计算费用。 在此期间支付的金额是此指标和 vCore 单位价格的乘积。

此指标的值是通过将每秒使用的最大 CPU 和内存使用量汇总来得到的。 如果所使用的金额低于最低vCore和最小内存设定的最低配置量,则按最低配置量计费。 为了比较 CPU 与内存以进行计费,可通过将内存量 (GB) 按照每个 vCore 3 GB 进行重新缩放,将内存归一化为以 vCore 数为单位。 对于无服务器超大规模,此指标针对主副本和任何命名副本公开。
vCore 秒
应用包 app_cpu_billed_HA_replicas 仅适用于无服务器超大规模。 报告期间跨 HA 副本所有应用计费的计算总和。 此总和的范围限定为属于主要副本的 HA 副本或属于给定命名副本的 HA 副本。 在跨 HA 副本计算此总和之前,对单个 HA 副本计费的计算量的确定方式与主要副本或命名副本相同。 对于无服务器超大规模,此指标针对所有主要副本、命名副本和异地副本公开。 在报告期间支付的金额是此指标和 vCore 单位价格的乘积。 vCore 秒
应用包 app_memory_percent 应用使用的内存相对于应用允许的最大内存的百分比。 对于无服务器超大规模,此指标针对所有主要副本、命名副本和异地副本公开。 百分比
用户资源池 cpu_percent 用户工作负载使用的 vCore 数相对于用户工作负载允许的最大 vCore 数的百分比。 百分比
用户资源池 data_IO_percent 用户工作负载使用的数据 IOPS 相对于用户工作负载允许的最大数据 IOPS 的百分比。 百分比
用户资源池 log_IO_percent 用户工作负载使用的日志 MB/s 相对于用户工作负载允许的最大日志 MB/s 的百分比。 百分比
用户资源池 workers_percent 用户工作负载使用的工人数占相对允许的最大工人数的百分比。 百分比
用户资源池 sessions_percent 用户工作负载使用的会话数相对于用户工作负载允许的最大会话数的百分比。 百分比

监控暂停和恢复状态

对于启用自动暂停的无服务器数据库,报告状态包括以下数值:

Status Description
在线 数据库处于联机状态。
暂停 数据库正在从联机状态过渡到暂停状态。
已暂停 数据库已暂停。
继续 数据库正在从暂停状态过渡到联机状态。

使用 Azure 门户

在 Azure 门户中,你可以在数据库的概览页面和服务器的总览页面上看到数据库状态。 此外,在 Azure 门户中,你可以在活动日志中查看无服务器数据库暂停和恢复事件的历史。

使用 PowerShell

通过以下PowerShell示例查看当前数据库状态:

$params = @{
    ResourceGroupName = $resourcegroupname
    ServerName = $servername
    DatabaseName = $databasename
}
Get-AzSqlDatabase @params | Select-Object -ExpandProperty "Status"

使用Azure CLI

请使用以下 Azure CLI 示例查看当前数据库状态:

$resourceGroupName = "<resource group name>"
$serverName = "<logical SQL server name>"
$databaseName = "<database name>"

az sql db show --name $databasename `
--resource-group $resourcegroupname `
--server $servername `
--query 'status' `
-o json