SQL Azure弹性池每个数据库的最大DTU数

4
我们正在使用SQL Azure,并且我们的数据库位于弹性池中。它具有以下参数:
- 整个池允许的DTU数量为400。 - 每个数据库允许的最大DTU数量为100。 - 池中的数据库数量为50。
简单来说,50个数据库中的4个可以同时达到峰值负载。
问题是 - 如果4个数据库已经达到峰值负载,第5个数据库也达到峰值负载会发生什么?
第5个数据库会得到0个DTU(因此查询将超时),还是弹性池会更有效地分配DTU(使每个数据库获得400/5 = 80个DTU)?
1个回答

3
据我所知,您估计可以达到极限的数据库数量是不正确的。可以同时达到其eDTU极限的数据库数量为2/3(或67%)的数据库。但这是在考虑您按以下方式估计池所需的eDTU时:
  1. MAX([每个DB的平均DTU利用率X总DB数], [每个DB的峰值DTU利用率X同时达到峰值的DB数])

  2. 您还应通过添加池中所有数据库所需的字节数来估算池所需的存储空间。然后确定提供此存储量的eDTU池大小。

  3. 最后,您应找到大于前两个eDTU计算中最大值的最小eDTU池大小

如果您使用这种方法来计算eDTU池大小,则不仅4个数据库,而且2/3的数据库都可以达到每个数据库的极限eDTU。

我也在询问,目前我们已经使用这个设置好几个月了。但我们注意到微软允许每个数据库设置超过100 DTU。在峰值期间,如果单个数据库获得200、300 DTU,将有助于提高性能。但问题可能是其余数据库获得多少DTU。 - michal.jakubeczy
你需要记住为池设置最小 eDTU,如果你担心超过 67% 的数据库使用了最大 eDTU,请考虑设置最小 eDTU。当你的数据库出现异常增长时,你也应该设置警报。 - Alberto Morillo
关于“弹性池资源共享公平性”的问题 - 这仅适用于当每个数据库的DTU最小值设置为非零值时吗?还是当此设置为0时也适用? - michal.jakubeczy
当数据库的最小DTU为0时,它们共享池资源。例如,考虑一个100 DTU的池,其中有20个数据库,每个数据库的最大DTU为10 DTU,最小DTU为0。这个池不会同时支持所有20个数据库达到10 DTU的峰值(因为那将需要200个池DTU),而是所有20个数据库将共享100个池DTU。 - Alberto Morillo
我们如何计算[同时峰值数据库数量 X 每个数据库的峰值DTU利用率]? - MAFAIZ
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接