你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure Functions 在 Azure Synapse Analytics 中管理专用 SQL 池(之前称为 SQL DW)的计算资源
本教程使用 Azure Functions 在 Azure Synapse Analytics 中管理专用 SQL 池(之前称为 SQL DW)的计算资源。
若要将 Azure Function App 与专用 SQL 池(以前称为 SQL DW)配合使用,必须创建服务主体帐户。 服务主体帐户需要在与专用 SQL 池(之前称为 SQL DW)实例相同的订阅下具有参与者访问权限。
使用 Azure 资源管理器模板部署基于计时器的缩放
若要部署该模板,需提供以下信息:
- 专用 SQL 池(之前称为 SQL DW)实例所在的资源组的名称
- 专用 SQL 池(之前称为 SQL DW)实例所在的服务器的名称
- 专用 SQL 池(之前称为 SQL DW)实例的名称
- Microsoft Entra ID 的租户 ID(目录 ID)
- 订阅 ID
- 服务主体应用程序 ID
- 服务主体密钥
有了上述信息以后,即可部署该模板:
部署模板以后,应该可以找到三个新资源:一个免费的 Azure 应用服务计划、一个基于使用情况的 Function App 计划,以及一个将要用于处理日志记录和操作队列的存储帐户。 请继续阅读其他部分,了解如何根据需要修改部署的函数。
更改缩放操作的时间
导航到 Function App 服务。 如果使用默认值部署了模板,该服务的名称应该为 DWOperations。 打开 Function App 以后,会看到五个函数部署到 Function App 服务。
选择“DWScaleDownTrigger”或“DWScaleUpTrigger”,以纵向扩展或纵向缩减 。 在下拉菜单中,选择“集成”。
目前显示的值应该为 %ScaleDownTime% 或 %ScaleUpTime%。 这些值指示计划基于在应用程序设置中定义的值。 目前可以忽略该值,根据后续步骤将计划更改为首选时间。
在计划区域,添加 CRON 表达式,用于反映你需要以怎样的频率来对 SQL 数据仓库进行纵向扩展。
schedule
的值是 CRON 表达式,其中包含以下六个字段:{second} {minute} {hour} {day} {month} {day-of-week}
例如,“0 30 9 * * 1-5”表示在每个工作日的上午 9:30 触发一次。 有关详细信息,请访问 Azure Functions 计划示例。
更改计算级别
导航到 Function App 服务。 如果使用默认值部署了模板,该服务的名称应该为 DWOperations。 打开 Function App 以后,会看到五个函数部署到 Function App 服务。
选择“DWScaleDownTrigger”或“DWScaleUpTrigger”,以对计算值进行纵向扩展或纵向缩减 。 选择函数以后,窗格会显示 index.js 文件。
将“ServiceLevelObjective”的值更改为所需级别,然后选择“保存”。 “ServiceLevelObjective”是数据仓库实例根据集成部分定义的计划将缩放到的计算级别。
使用暂停或继续而非缩放
目前,默认启用的函数为 DWScaleDownTrigger 和 DWScaleUpTrigger。 若要改用暂停和继续功能,可以启用 DWPauseTrigger 或 DWResumeTrigger。
导航到“函数”窗格。
在要启用的相应触发器的滑动切换开关上选择。
导航到用于更改计划的各个触发器的“集成”选项卡。
注意
缩放触发器和暂停/继续触发器之间的功能差异在于发送给队列的消息。 有关详细信息,请参阅添加新的触发器函数。
添加新的触发器函数
目前,模板中只包括两个缩放函数。 使用这些函数,在一天中只能纵向缩减和纵向扩展各一次。 若要进行更精细的控制,例如每天纵向缩减多次,或者在周末表现出不同的缩放行为,则需添加另一触发器。
创建新的空白函数。 选择靠近“函数”位置的 + 按钮,显示函数模板窗格。
从“语言”中选择“JavaScript”,然后选择“TimerTrigger” 。
为函数命名,然后设置计划。 下图显示用户如何在每周六凌晨(周五深夜)触发其函数。
从其他触发器函数中的一个复制 index.js 的内容。
将操作变量设置为所需行为,如下所示:
// Resume the dedicated SQL pool (formerly SQL DW) instance var operation = { "operationType": "ResumeDw" } // Pause the dedicated SQL pool (formerly SQL DW) instance var operation = { "operationType": "PauseDw" } // Scale the dedicated SQL pool (formerly SQL DW)l instance to DW600c var operation = { "operationType": "ScaleDw", "ServiceLevelObjective": "DW600c" }
复杂的计划
本部分将简要介绍如何才能对暂停、继续和缩放功能进行更复杂的计划。
示例 1
每天早晨 8 点纵向扩展到 DW600c,晚上 8 点纵向缩减到 DW200c。
函数 | 计划 | 操作 |
---|---|---|
Function1 | 0 0 8 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"} |
Function2 | 0 0 20 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"} |
示例 2
每天早晨 8 点纵向扩展到 DW1000c,下午 4 点纵向缩减到 DW600 一次,晚上 10 点纵向缩减到 DW200c。
函数 | 计划 | 操作 |
---|---|---|
Function1 | 0 0 8 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"} |
Function2 | 0 0 16 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"} |
Function3 | 0 0 22 * * * | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"} |
示例 3
工作日早晨 8 点纵向扩展到 DW1000c,下午 4 点纵向缩减到 DW600c 一次。 周五晚上 11 点暂停,周一早晨 7 点继续。
函数 | 计划 | 操作 |
---|---|---|
Function1 | 0 0 8 * * 1-5 | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"} |
Function2 | 0 0 16 * * 1-5 | var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"} |
Function3 | 0 0 23 * * 5 | var operation = {"operationType": "PauseDw"} |
Function4 | 0 0 7 * * 1 | var operation = {"operationType": "ResumeDw"} |
后续步骤
详细了解计时器触发器 Azure Functions。
请参阅专用 SQL 池(以前称为 SQL DW)示例存储库。