适用于:Azure SQL 数据库
本文解释了 Azure SQL 数据库 中无服务器计算层的自动扩展工作原理。 最小vCore和最大vCore参数对于无服务器计算层非常重要。 这些参数会影响数据库的性能体验和计算成本。
缩放响应能力
无服务器数据库在具有足够容量的基础结构上运行,以满足资源需求,而不会中断由最大 vCore 配置设置的限制内请求的任何计算量。 通常,CPU 纵向扩展到已配置的最大 vCore 数几乎是瞬时完成的,并且不会造成任何连接中断。 有时,如果需要重新平衡计算机资源,纵向扩展可能需要更长的时间,这可能需要几分钟时间。 数据库在重新均衡期间保持联机状态,除非在操作结束时短暂删除连接。 这种再平衡情况很罕见。 在所有情况下,CPU 纵向扩展都与内存纵向扩展无关。
内存管理
在通用服务层和超大规模服务层,系统对无服务器数据库的内存回收频率都高于配置计算数据库。 这种行为有助于控制无服务器环境的成本,并可能影响性能。
缓存回收
与配置计算数据库不同,无服务器数据库在CPU或活跃缓存利用率较低时会从SQL缓存中回收内存。
- 当最近使用的缓存条目的总大小在一段时间内低于阈值时,活跃缓存利用率较低。
- 当缓存回收被触发时,系统会逐步将目标缓存大小减少到之前大小的一部分,只有在使用率保持低时才继续回收。
- 发生缓存回收时,用于选择要逐出的缓存条目的策略与当内存压力较高时适用于预配计算数据库的策略相同。
- 系统从未将缓存大小减少到最低vCore定义的最小内存限制以下。
无论是无服务器数据库还是配置计算数据库,只要所有可用内存都被使用,系统可以驱逐缓存条目。
在 CPU 利用率较低时,主动缓存利用率可能会保持较高水平(具体取决于使用模式),并会阻止内存回收。 此外,用户活动停止后、内存回收之前也可能出现其他延迟,因为周期性后台进程响应之前的用户活动。 例如,删除操作和 查询存储 清理任务生成的幽灵记录被标记为删除对象,但直到幽灵清理过程运行后才会被物理删除。 虚影清除可能涉及将数据页读入缓存。
缓存合成
随着系统从磁盘获取数据,SQL内存缓存会增长,工作速度与配置数据库相同。 当数据库忙碌时,缓存可以无限制地增长,同时内存仍然可用。
磁盘缓存管理
在超大规模服务层(无论是无服务器层还是配置计算层)中,每个计算副本都使用一个弹性缓冲池扩展(RBPEX)缓存。 该缓存将数据页存储在本地SSD上,以提升IO性能。 但是,在超大规模的无服务器计算层级中,每个计算副本的 RBPEX 缓存会自动增长和收缩,以响应工作负荷需求的增加和减少。 RBPEX 缓存可以增长到的最大大小是为数据库配置的最大内存的三倍。 关于无服务器中最大内存和 RBPEX 自动缩放限制的详细信息,请参见 无服务器超大规模资源限制。