Azure自动扩展数据库

时间:2018-03-26 14:03:58

标签: azure azure-sql-database

我将Azure云服务与单个Azure数据库一起使用。我将定价层设置为S4,这给了我200个DTU和250GB。问题是我的所有工作者和Web角色都设置为使用除数据库之外的加载进行自动扩展。当我进行负载测试时,所有内容都会自动升级,直到数据库开始阻塞导致瓶颈的查询。

我找不到任何数据库的自动缩放选项。我在微软发现了这个视频: Azure SQL Database dynamically scale-up or scale-down

但它基本上表示您需要转到Azure门户并手动扩展到更大的定价层。它没有提到有关自动放大或缩小的任何内容。

我也查看了Elastic Pools,但这些似乎更多的是同时使用许多数据库,而不仅仅是1个数据库。

所以我的问题是:

如何自动扩展和缩小单个Azure数据库?

2 个答案:

答案 0 :(得分:5)

您有几个选项,例如Alberto提到您可以使用REST API,当然还有azure run-books / webhooks来配置警报规则。

让我在这里解释一下我的过程。

  1. 在AzureAutomation中部署用于更改性能层的azure运行手册 - Try this
  2. 创建一些用于随时触发您的手册的webhook - Webhooks for Azure runbook
  3. 从您的SQL数据库中,创建一个警报规则,其中包含DTU使用大于或等于某个值(例如1600)时的条件,调用相应的webhook来动态更改层。
  4. enter image description here

答案 1 :(得分:2)

您可以测试资源消耗是否符合资源限制,如下所示:

SELECT
(COUNT(end_time) - SUM(CASE WHEN avg_cpu_percent > 80 THEN 1 ELSE 0 END) * ,(COUNT(end_time) - SUM(CASE WHEN avg_log_write_percent > 80 THEN 1 ELSE 0 END),
(COUNT(end_time) - SUM(CASE WHEN avg_data_io_percent > 80 THEN 1 ELSE 0 END FROM sys.dm_db_resource_stats

服务水平目标(SLO)为99.9%< =进入下一层

如果SLO为99.9%,则可以使用REST API或T-SQL从应用程序中扩展层。

ALTER DATABASE [db1] MODIFY (EDITION = 'Premium', MAXSIZE = 1024 GB, SERVICE_OBJECTIVE = 'P15');