本文介绍了Azure SQL数据库的SQL Elastic Pool的概况和部署步骤。
对SQL Elastic Pools的要求
假设你有一个业务需求,为不同的客户配置多个Azure SQL数据库。通常情况下,你为每个客户部署一个数据库,每个数据库都有其服务层,资源。由于不可预测的用户模式,预测数据库的负载是很有挑战性的。在这种情况下,你可能最终会出现资源配置不足或过度配置的情况。账单也发生在单个数据库上。
你需要根据峰值利用率来配置Azure数据库,以便顺利地运行数据库活动。然而,这种过度配置系统资源(按峰值负载)的做法并不符合成本效益,因为大部分时间都有闲置资源的时间。
下面的截图描述了一个周期性高峰的数据库使用模式,而数据库在大部分时间内都是空闲的。

假设你已经根据数据库的峰值负荷来配置资源。在这种情况下,你可能为更高的资源付费,但并不是一直在消耗它们。
如果你还有几个具有类似使用模式的数据库,我们可以在多个数据库中共享资源。如下图所示,整体的DTU利用率仍然达到90的峰值。因此,通过在多个数据库之间共享资源,你可以从降低整体成本中获益。其余的数据库则从更高的DTU或vCPU配置中获益,从而提高数据库和应用的性能。

我们如何在Azure SQL数据库中做这种资源池?让我们在这篇文章中弄清楚。
Azure数据库中的弹性池实现了一种成本效益高的解决方案,适合不可预知的使用需求。这些弹性池可以配置多个具有资源池的SQL数据库。因此,你可以灵活地建立一个高端的数据库服务器,而你的数据库可以根据其工作负载要求来利用。这些弹性池使你能够在不影响性能的情况下优化几个数据库的成本。
注意:Azure不对弹性池中的单个数据库收费,它以最高的vCores或eDTUs对池子存在的每个小时收费。
- 你可以在vCore或DTU购买模式中配置弹性池
- 它允许为一个数据库配置最小和最大的资源
- 数据库可以在弹性池内自动扩展。例如,数据库可以在重载时消耗高资源,而在空闲时消耗最小的分配资源
使用Azure门户为Azure SQL数据库创建一个新的SQL弹性池
要创建一个新的弹性池,请在Azure门户中验证自己,并搜索SQL弹性池。

点击超链接-创建SQL弹性池。在弹性池的细节中,输入一个池的名称,如下图所示。
点击创建一个新的服务器。它会打开另一个创建SQL数据库服务器的页面,需要Azure服务器名称、位置和认证方法。
选择一个选项--使用SQL认证,并指定服务器管理凭证。 如果你已经配置了Azure AD,你也可以选择Azure Active Directory认证。

下一个部分是配置计算+存储。默认情况下,它显示为General Purpose Gen5,2个vCores,32GB。

点击配置弹性池,你会得到配置池设置和每个数据库设置的选项。
池子设置。
池的设置需要从基于V-Core和DTU的购买模式中选择一个服务层。
- 基于V-core的采购模式
- 一般用途
- 业务关键型
- 基于DTU的采购模式
- 基本型
- 标准型
- 高级

硬件配置取决于所选择的购买模式和服务层级。在这个例子中,我选择的是基于DTU的购买模式和基本服务层。

每个数据库的设置
每个数据库设置可以配置最小和最大资源。你可以用它来配置分配DTU,以避免一个特定的数据库消耗所有或没有的资源。

我的演示中的弹性池配置如下。

其他设置
从下拉列表中指定一个首选的数据库维护窗口。默认值是下午5点到早上8点。

在部署前审查你的弹性池配置。

点击创建和部署Azure SQL数据库弹性池。

弹性池仪表板显示资源配置、弹性数据库和弹性数据库设置。如下图所示,弹性池中没有数据库。

要在弹性池中添加一个数据库,你会得到以下两个选项。
- 点击0数据库。你可以使用这个选项从弹性池中添加或删除数据库。如果你在Azure SQL Server上有一个现有的数据库,你可以从这个选项添加。

- 创建数据库。你可以从这个创建数据库选项中创建一个新的Azure SQL数据库。指定一个新的数据库名称和服务器字段,显示先前配置的Azure服务器。

如果你部署一个Azure SQL数据库,你可以选择部署模式和服务层。这里可以注意到,在我们为弹性池创建新数据库时,控制台没有得到指定部署模式的选项。
在审查页面,它不显示部署的数据库价格。它统计的是包含在池中的成本。

一旦数据库被部署,你可以在 "当前池中的数据库 "部分查看数据库,如下所示。

将现有的Azure SQL数据库添加到SQL弹性池中
假设你在Azure SQL Server中有一个现有的数据库,但不属于弹性池的一部分。你可以将该数据库添加到弹性池中。
点击添加数据库,就会给出Azure SQL Server中存在的不属于弹性池的数据库列表。

例如,它显示了一个数据库[azuredemo2]要添加到弹性池中。点击 "保存",它将数据库列在 "准备添加到此池 "选项中。

点击保存,它开始部署,将Azure SQL数据库添加到弹性池中。 
下图显示了两个Azure数据库进入弹性池,以及它们的平均eDTU(%)、峰值eDTU(%)和使用的数据空间。

从SQL弹性池中删除一个数据库
如果需要,我们可以将数据库从弹性池中移出。选择数据库并点击从池中移除,就可以从弹性池中移除一个数据库。例如,下面的截图试图从弹性池中删除数据库[azuredemo2]。

它将数据库移至 "要从池中移除的数据库 "部分。

点击保存,它开始部署,将数据库从弹性池中移出。 
在部署结束时,你不会看到被移除的数据库在弹性池中的一部分。

注意:如果我们将数据库移入或移出弹性池,用户可能会在操作结束后注意到一个小的(几秒钟)停机时间。
SQL弹性池中的数据库的业务连续性
弹性池中的Azure SQL数据库支持业务连续性选项,如时间点恢复、地理恢复和Active-geo复制。
客户案例研究
如果你不知道数据库的工作负载模式,并且需要经济有效地最大限度地利用你的Azure资源,就可以使用SQL弹性池。
总结
在这篇文章中,我们探索了Azure SQL数据库的SQL弹性池。后来,我们将数据库部署到弹性池中。你可以在弹性池中添加或删除Azure SQL Server中的现有数据库,并将数据库可用性的中断降到最低。它可以使用DTU或vCore购买模式来满足计算需求。