Azure SQL - DTU CPU使用率差异

时间:2016-08-25 10:32:41

标签: c# azure-sql-database connection-pooling

我一直在分析在Azure SQL中运行的执行得非常糟糕的数据库。它位于高级层,有1750个DTU可用,有时仍然可以最大化DTU。

我通过存储过程确定了各种查询和可怕的数据访问模式,从而降低了负载。但是在下图中DTU和CPU使用率之间仍然存在巨大的差异,我在“查询性能洞察”中看到的任何其他图像都是如此。在azure sql中显示DTU行与大多数情况下的CPU使用情况一致。

DTU (in red) to CPU usage per query

查看位于此的C#应用​​程序,对于使用该应用程序的每个用户,它会创建一个SQL用户,并在连接字符串中使用该用户来访问该数据库。这意味着未使用连接池,导致SQL azure DB上的活动用户/会话数量大得多。这可能是DTU使用率如此之高的唯一原因吗?

或者我可能会遗漏一些关于在Azure门户中不可见的IO的内容吗?

由于 尼尔

编辑:添加会话和工作者形象!

enter image description here

基于我现在不相信...会话百分比是多少?喜欢10%但10%的东西?允许的最大值?

Edit2:添加更多指标:

一周: enter image description here

负载高时2-3小时: enter image description here

我认为紫色穗是重新指数所以可以忽略它!

1 个答案:

答案 0 :(得分:1)

尝试理解DTU与资源对我来说也是一个绊脚石。点击您的资源利用率图表,然后点击修改default resource chart

然后你会得到一个可以监控很多资源的滑块。选择会话和工人百分比。很可能其中一个是你的问题。如果没有,您可以添加:CPU,数据IO,日志IO和/或内存中OLTP百分比。点击确定。

Resource options

现在,您应该找到的是查询或查询中的实际成本。了解您的查询如何使用不同的资源可以帮助您解决这些问题。我在做大插入时学到了这一点,我最大化了我的Log IO,其他一切都是<5%利用率。

尝试一下,如果你对连接池是对的,不幸的是,这将意味着在应用程序中进行一些重构。至少,使用它会比仅仅查看DTU百分比给你更多的洞察力!