我有一个不简单的问题。当我的数据库有10个DTU时,执行查询大约需要17秒。我将等级提高到50DTU-现在执行需要3-4秒。这个比率与文档相符-- DTU越多,工作速度越快。
但!
1在我的PC上,我可以在1秒内执行查询。
2在门户统计数据中,我只使用了12个DTU (最大DTU百分比= 25% )。在sys.dm_db_resource_stats中,我看到最大值(Avg_cpu_percent)约为25%,其他参数更少。
所以问题是-为什么我的查询需要3-4秒才能执行?可以在1秒内执行。而且服务器没有用掉我所有的DTU。如何让服务器更快地使用所有可用资源来执行查询?
发布于 2017-03-16 20:12:41
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
发布于 2017-03-16 20:20:53
在我的PC上,我可以在1秒内执行查询
我们不应该将我们的Onprem计算能力与DTU进行比较。tier.so是CPU、IO、内存的组合,您将根据您的性能DTU获得此比较无效。
如何让服务器更快地使用所有可用资源来执行查询?
这是不可能的,因为当sql运行查询时,内存是唯一的约束,这会阻止查询甚至是CPU等资源的starting.Rest,IO速度可以根据查询所做的事情而增加或减少。
总之,您必须确保查询不会因为资源紧张而受到限制,如果需要,它们可以用完所有资源,在不需要的时候可以释放它们。
您还必须查看等待类型,并进一步微调查询。
发布于 2017-03-17 23:54:09
正如伯纳德·范德·贝肯所说:
CPU是对
、内存、数据I/O和事务日志I/O的综合测量。
我还会补充说,Microsoft不共享用于计算DTU的公式。您提到,在查询执行期间,您没有看到DTU 100%挂起。但由于我们不知道公式,您很可能是在与DTU的组件挂钩,而不是与DTU本身挂钩。
Azure SQL是一个共享环境,每个租户都会受到限制,以确保所有租户的最低SLA
https://stackoverflow.com/questions/42833515
复制相似问题