是否所有可用的DTU都用于执行查询?

时间:2017-03-16 12:00:43

标签: sql-server azure azure-sql-database

我有一个不简单的查询。 当我的数据库有10个DTU时,执行查询大约需要17秒。 我将级别增加到50 DTU - 现在执行需要3-4秒。 该比率对应于文档 - 更多DTU =更快地工作。

但是!

1在我的电脑上,我可以在1秒内执行查询。

2在门户网站统计中,我看到我只使用了12个DTU(最大DTU百分比= 25%)。 在sys.dm_db_resource_stats中,我看到MAX(avg_cpu_percent)约为25%而其他参数更少。

所以问题是 - 为什么我的查询需要3-4秒才能执行? 它可以在1秒内执行。并且服务器不使用我的所有DTU。 如何让服务器使用所有可用资源来更快地执行查询?

4 个答案:

答案 0 :(得分:1)

DTU是CPU,内存,数据I / O和事务日志I / O的组合度量。

这意味着达到DTU瓶颈可能意味着任何一个。

这个问题可以帮助您衡量不同方面:Azure SQL Database "DTU percentage" metric

此处有关于DTU的更多信息:https://docs.microsoft.com/en-us/azure/sql-database/sql-database-what-is-a-dtu

答案 1 :(得分:1)

  

在我的电脑上,我可以在1秒内执行查询

我们不应该将Onprem计算能力与DTU进行比较。 DTU是CPU,IO,内存的组合,您将根据性能等级获得。因此比较无效。

  

如何让服务器使用所有可用资源更快地执行查询?

这根本不可能,因为当sql运行查询时,内存是唯一的约束,可以阻止查询甚至启动。资源的恢复,如CPU,IO速度可以​​根据查询的内容增加或减少< / p>

总之,您必须确保查询不会因资源紧张而受到限制,如果需要,它们可以耗尽所有资源,并且可以在不需要时释放它们。

您还必须查看等待类型并进一步微调查询。

答案 2 :(得分:0)

正如Bernard Vander Beken所说:

  

DTU是CPU,内存,数据I / O和事务的组合度量   记录I / O.

我还要补充一点,微软不会共享用于计算DTU的公式。您提到在查询执行期间您没有看到DTU挂钩率为100%。但由于我们不知道这个公式,你可能很好地将DTU的组件固定在一起,但不能与DTU本身挂钩。

Azure SQL是一个共享环境,每个租户都将受到限制,以确保所有租户的最低SLA

答案 3 :(得分:0)

什么是DTU非常模糊。

我们做了一个实验,我们在不同数据中心的DTU数量相同的机器上运行一组基准测试。 http://dbwatch.com/azure-database-performance-measured

事实证明,实际表现相差5倍。 我们还看到了在同一数据库上重复查询的性能发生剧烈变化的情况。

如果您想将PC上运行的实例与天蓝云中的实例进行比较,我们免费提供数据库性能基准。