我有一个不简单的查询。 当我的数据库有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。 如何让服务器使用所有可用资源来更快地执行查询?
答案 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上运行的实例与天蓝云中的实例进行比较,我们免费提供数据库性能基准。