本文对微软公司的2024 SIGMOD论文《Proactive Resume and Pause of Resources for Microsoft Azure SQL Database Serverless》进行解读,全文共6140字,预计阅读需要20至30分钟
在当今数字化时代,云数据库已成为企业核心竞争力的关键。文章将深入探讨微软Azure SQL数据库的ProRP基础设施,这一创新方案通过优化资源分配,显著提升了服务质量,同时降低了运营成本,为企业在激烈的市场竞争中提供了有力支持。

ProRP基础设施
背景:随着云计算的快速发展,云数据库的资源管理成为了一个关键的研究领域。传统的云数据库资源管理主要依赖于固定资源分配(Provisioned)和按需分配(Serverless)两种模式。
固定资源分配模式虽然简单,但资源利用率低,成本较高;而按需分配模式则通过动态调整资源来满足当前工作负载,从而提高了资源利用率并降低了成本。然而,现有的按需分配策略大多是反应式的,即仅根据当前资源需求进行调整,这种策略存在明显的局限性。
反应式策略的局限性主要体现在以下两个方面:
1.资源恢复延迟
当数据库在长时间空闲后重新启动时,反应式策略需要时间来重新分配资源,这可能导致用户在登录时面临延迟。这种延迟在对延迟敏感的应用场景中尤为明显。例如,在金融交易系统或实时监控系统中,即使是短暂的延迟也可能导致严重的后果。
2.计算开销
计算开销:频繁的资源分配和回收操作会引入显著的计算开销,反而浪费资源。尤其是在高密度的工作负载下,这种开销可能进一步加剧性能问题。例如,在一个拥有数十万数据库的云环境中,频繁的资源分配和回收操作可能导致系统性能下降,甚至影响到其他正常运行的数据库。
主动式资源分配策略:为了解决这些问题,微软提出了主动式资源分配策略(Proactive Resource Allocation),通过预测未来的资源需求,提前进行资源分配和回收。这种策略不仅能提高服务质量(QoS),还能进一步降低运营成本。
主动资源分配的核心思想是利用历史数据预测未来的资源需求,并根据预测结果提前做出资源分配决策。这种方法的优势在于:
1.减少延迟
通过提前恢复资源,可以显著减少用户在登录时的等待时间,从而提高用户体验。例如,如果系统预测到某个数据库将在5分钟后被访问,提前恢复资源可以确保用户在登录时资源已经可用。
2.提高资源利用率
通过更精准的资源回收,可以减少资源浪费,从而降低运营成本。例如,如果系统预测到某个数据库在未来7小时内不会被访问,可以物理暂停资源,释放计算和存储资源供其他数据库使用。
3.降低计算开销
通过减少不必要的资源分配和回收操作,可以降低系统的计算开销,提高整体性能。
时间表示:时间由一系列线性有序的时间点 T 表示,其中 T⊆R+ 是非负实数的集合。
数据库和资源需求:设 D 为数据库的集合。资源需求 Ad :D×T→{0,1} 是一个函数,它将数据库 d∈D 和时间点 t∈T 映射到一个二进制值,表示在时间点 t 是否需要为数据库 d 分配资源。如果需要资源,则 Ad (d,t)=1,否则 Ad (d,t)=0。
资源分配:类似地,资源分配 A:D×T→{0,1} 是一个函数,它将数据库 d∈D 和时间点 t∈T 映射到一个二进制值,表示在时间点 t 是否为数据库 d 分配了资源。
反应式资源分配:资源的分配或回收基于当前的需求。这种策略存在两个主要局限性:
资源可用性延迟:如果在空闲期间回收了资源,当客户恢复活动时,可能会出现资源可用性的延迟。在最坏的情况下,如果节点上没有足够的资源来恢复数据库,数据库可能需要被移动到另一个节点。
计算开销:频繁的资源分配和回收流程可能会引入显著的计算开销,消耗资源而不是节省资源。
服务质量 (QoS):服务质量最高时,资源在客户需要时总是可用的。服务质量较低时,资源可能会被限制或不可用。
运营成本效率:运营成本效率最高时,资源仅在需要时分配。效率较低时,资源可能会被低效利用。
最优平衡:资源分配策略的最终目标是在服务质量(QoS)和运营成本效率之间找到最佳平衡点。理想情况下,资源仅在需要时分配,即对于所有数据库 d∈D 和时间点 t∈T,有 Ad (d,t)=A(d,t)。这种最优资源分配需要完美的资源需求预测,但在实际中很难实现,因为客户活动不断变化。因此,任何资源分配策略的有效性都是通过与这一最优情况的差异来衡量的。
ProRP的设计遵循以下原则:
无单点故障:采用分布式架构,确保系统的可靠性和可扩展性。
无需人工干预:系统自动调整配置参数,适应不断变化的工作负载。
与Azure SQL生态系统的无缝集成:利用Azure SQL现有的组件和服务,减少开发和维护成本。
主动数据库范围的决策:资源分配决策针对每个数据库进行优化,基于当前和预测的资源需求。
简单的预测技术:采用概率预测技术,易于实现和维护,同时满足实际应用的准确性需求。
数据库状态感知处理:根据数据库的当前状态(恢复、逻辑暂停或物理暂停)激活相关功能。
精确的客户活动时间戳:存储客户活动的开始和结束时间,而非资源恢复和暂停时间戳。
紧凑的数据库历史存储:仅保留最近的客户活动记录,确保历史存储的紧凑性。
持久的数据库历史存储:即使数据库在节点间迁移,历史记录也应保持可用。
ProRP的核心是通过预测数据库的未来资源需求,提前做出资源分配决策。这一策略的关键在于如何准确预测用户活动,并在预测的基础上做出合理的资源分配。论文中提到的算法1(Proactive resource allocation policy)是ProRP策略的具体实现,它通过以下几个关键步骤实现高效的资源管理:
用户活动跟踪
ProRP通过sys.pause_resume_history表记录用户活动的开始和结束时间戳。这些时间戳是预测未来活动的基础数据。通过精确记录用户活动,ProRP能够分析用户的使用模式,从而为后续的预测提供准确的数据支持。
预测下次活动
当数据库进入空闲状态时,ProRP会调用算法4(sys.PredictNextActivity)来预测下次用户活动的时间。这一预测算法基于历史数据,通过滑动窗口的方式分析用户活动的概率。具体来说,算法会在历史数据中滑动一个固定大小的时间窗口(如7小时),计算每个窗口内用户活动的概率。如果某个窗口的活动概率超过设定的阈值(如0.1),则将该窗口的最早活动时间作为预测的下次活动时间。
资源暂停决策
基于预测结果,ProRP决定是否暂停资源。如果预测到未来一段时间内没有用户活动,则物理暂停资源以节省成本;否则,逻辑暂停资源。这种决策机制使得ProRP能够在保证服务质量的同时,最大程度地降低资源浪费。
资源恢复决策
在预测的下次活动时间之前,ProRP会提前恢复资源,以确保用户在登录时资源已经可用。这一决策通过算法5(ProactiveResume)实现,它会定期检查所有物理暂停的数据库,并根据预测的下次活动时间提前恢复资源。
02 客户活动跟踪与历史存储
ProRP为每个数据库维护一个内部历史表sys.pause_resume_history,记录用户活动的开始和结束时间戳。这些时间戳用于预测未来的活动模式。为了保持历史数据的紧凑性,ProRP会定期删除旧的历史记录,只保留最近一段时间(如28天)的数据。
算法2(sys.InsertHistory)和算法3(sys.DeleteOldHistory)分别用于插入新的历史记录和删除旧的历史记录。这些操作的时间复杂度为O(log N),其中N是历史记录的数量。通过这种方式,ProRP确保每个数据库的历史存储空间在几KB以内,不会对性能产生显著影响。
ProRP的预测算法是整个系统的核心。它通过分析历史数据中的用户活动模式,预测未来的用户行为。具体来说,预测算法通过以下几个步骤实现:
滑动窗口分析
算法在历史数据中滑动一个固定大小的时间窗口(如7小时),计算每个窗口内用户活动的概率。窗口的大小和滑动步长(如5分钟)是预测算法的关键参数,它们直接影响预测的准确性和计算开销。例如,较大的窗口可以捕捉到更长时间段内的活动模式,但可能会降低预测的精度;较小的窗口则可以提高精度,但可能会增加计算开销。
计算活动概率
对于每个时间窗口,算法计算该窗口内用户活动的概率。具体来说,算法会统计历史数据中每个窗口内用户活动的次数,并将其除以总的历史天数。如果某个窗口的活动概率超过设定的阈值(如0.1),则认为该窗口内的活动是可预测的。例如,如果在过去28天内,某个窗口内用户活动的概率为0.8,则该窗口内的活动被认为是高概率事件。
选择最佳窗口
算法会选择概率最高的窗口作为预测的下次活动时间。如果多个窗口的概率都超过阈值,则选择最早活动时间的窗口。这种选择机制确保了预测结果的准确性和及时性。例如,如果多个窗口的概率都超过0.1,但其中一个窗口的活动时间最早,则选择该窗口作为预测结果。预测算法的时间复杂度为O((p/s) × h × log N),其中p是预测范围(如24小时),s是窗口滑动步长(如5分钟),h是历史数据的天数(如28天),N是历史记录的数量。实验表明,该算法的延迟在1秒以内,适合大规模生产环境。

下一个活动预测
主动恢复操作:ProRP的主动恢复操作是通过算法5(ProactiveResume)实现的。该算法会定期检查所有物理暂停的数据库,并根据预测的下次活动时间提前恢复资源。具体来说,算法会从元数据表中读取预测的下次活动时间,并在预测时间之前恢复资源,以确保用户在登录时资源已经可用。
操作频率:主动恢复操作的频率是一个关键参数。实验表明,将主动恢复操作的频率设置为每分钟一次是合理的。这种频率既能保证服务质量,又不会对现有基础设施造成过大压力。此外,ProRP通过调整主动恢复操作的频率,确保每次操作中恢复的数据库数量不超过100个,以避免对现有基础设施造成过大压力。
ProRP使用多个关键性能指标(KPI)来评估其效果,包括服务质量(QoS)和运营成本效率。服务质量通过客户在资源可用时的首次登录百分比来衡量,而运营成本效率则通过资源因逻辑暂停和主动恢复而空闲的时间百分比来衡量。
为了确保预测的准确性,ProRP使用Azure ML自动化和分布式的离线训练管道。该管道每月在每个Azure区域运行一次,访问全球数百万无服务器数据库的数月客户活动数据。通过调整活动预测的参数,管道计算KPI指标,并选择在服务质量与运营成本之间达到最佳平衡的配置。
实验结果显示,ProRP在提高服务质量的同时,显著降低了运营成本。具体来说:

跨不同Azure区域的验证

跨不同训练和测试间隔的验证

不同的窗口大小(小时)

预测的置信度变化
1.服务质量的提升
在ProRP策略下,80%-90%的用户登录发生在资源已经可用的时间段内,而反应式策略下这一比例仅为60%-68%。这表明ProRP能够更准确地预测用户活动,并提前恢复资源,从而减少了用户在登录时的等待时间。例如,在Azure的EU1区域,ProRP策略下用户登录时资源可用的比例达到了85%,而反应式策略下仅为63%。
2.运营成本的降低
ProRP通过更精准的资源回收,将资源空闲时间从5%-12%降低到3%-7%。这表明ProRP能够在保证服务质量的同时,最大程度地降低资源浪费,从而降低运营成本。例如,在EU2区域,ProRP策略下资源空闲时间仅为4%,而反应式策略下为11%。此外,实验还表明,ProRP的性能可以通过调整配置参数进行优化。因此,ProRP在设计中需要在服务质量与运营成本之间找到最佳平衡点。
性能:ProRP的预测算法在平均情况下仅需90毫秒即可完成一次预测,即使在最坏情况下也不会超过700毫秒。这表明ProRP的计算开销是可以接受的,不会对数据库的性能产生显著影响。
ProRP通过调整主动恢复操作的频率,确保每次操作中恢复的数据库数量不超过100个,以避免对现有基础设施造成过大压力。实验表明,将主动恢复操作的频率设置为每分钟一次是合理的。这种频率既能保证服务质量,又不会对现有基础设施造成过大压力。
实验还测量了ProRP的历史数据存储开销。结果显示,平均每个数据库的历史数据存储空间在7KB以内,即使在最坏情况下也不会超过74KB。这表明ProRP的历史数据存储开销是可以接受的,不会对数据库的性能产生显著影响。

主动策略开销
尽管ProRP已经取得了显著的成果,但仍有进一步改进的空间。未来的工作方向包括:
更细粒度的资源分配
目前ProRP仅在资源分配和回收之间进行二元决策。未来可以考虑根据预测的工作负载动态调整资源分配的粒度。例如,ProRP可以根据预测的工作负载大小,动态调整分配的CPU和内存资源。这种细粒度的资源分配能够进一步提高资源利用率,降低运营成本。
自动化参数调整
目前ProRP的参数(如窗口大小、预测置信度等)需要手动调整。未来可以引入机器学习模型,自动选择最优参数。例如,可以通过强化学习算法,动态调整这些参数,以适应不断变化的工作负载模式。这种自动化参数调整能够进一步提高ProRP的性能和适应性。
与负载均衡的协同优化
ProRP的资源回收效果依赖于资源是否被其他数据库重用。未来可以将ProRP与负载均衡算法结合,进一步优化资源利用率。可以通过负载均衡算法,将回收的资源分配给最需要的数据库,从而提高整个系统的资源利用率。这种协同优化能够进一步提高系统的整体性能和资源利用率。
系统维护操作的优化
目前ProRP主要关注用户活动的预测,未来可以扩展到系统维护操作(如备份、更新等)的优化。这种优化能够进一步提高系统的可用性和用户体验。例如,如果预测显示某个数据库在未来一段时间内不会被访问,ProRP可以选择在该时间段内进行系统维护操作,从而减少对用户的影响。
自动化数据库管理系统的研究可以按照优化目标和方法进行分类:
优化目标:
物理设计改进:一些研究关注于数据结构、索引的选择和调整。
参数调整:自动调整数据库管理系统中的关键参数,如查询优化器的成本模型、日志记录的频率等。
资源分配:自动化地根据当前和预测的工作负载调整资源分配。
方法论:
基于规则的方法:通过预定义的规则进行资源分配和调整。这种方法简单且易于实现,但适应性较差。
基于成本模型的方法:通过成本模型评估不同配置的性能,选择最优配置。这种方法需要复杂的模型和大量的计算。
基于机器学习的方法:通过机器学习模型预测工作负载并调整资源分配。这种方法在准确性上具有优势,但需要大量的训练数据和计算资源。
ProRP结合了基于规则和基于概率预测的方法,通过简单的概率模型实现了高效的资源分配,同时避免了机器学习模型的复杂性和开销。
与现有的资源管理策略相比,ProRP具有以下优势:
细粒度资源管理
ProRP可以根据预测的工作负载动态调整资源分配的粒度,而传统的策略通常只能进行二元决策(分配或回收)。这种细粒度的资源管理能够进一步提高资源利用率,降低运营成本。
自动化参数调整
ProRP可以通过机器学习算法自动调整参数,以适应不断变化的工作负载模式。这种自动化参数调整能够进一步提高系统的性能和适应性。
协同优化
ProRP可以与负载均衡算法结合,进一步优化资源利用率。这种协同优化能够提高系统的整体性能和资源利用率。
预测能力
ProRP通过历史数据预测未来的资源需求,而传统的反应式策略仅基于当前需求进行资源分配。这种预测能力使得ProRP能够提前做出资源分配决策,从而减少延迟并提高资源利用率。
结论:ProRP通过主动预测数据库的资源需求,实现了资源的高效分配和回收。实验结果表明,ProRP在提高服务质量的同时,显著降低了运营成本。此外,ProRP的设计原则和实现方法使其能够无缝集成到现有的Azure SQL生态系统中,具有良好的可扩展性和适应性。
总结:尽管ProRP已经取得了显著的成果,但仍有进一步改进的空间。未来的工作方向包括更细粒度的资源分配、自动化参数调整、与负载均衡的协同优化以及系统维护操作的优化。通过这些改进,ProRP有望进一步提升云数据库的资源管理效率,为用户提供更优质的服务。
论文解读联系人:
刘思源
13691032906(微信同号)
liusiyuan@caict.ac.cn









