C# Azure SQL-DTU CPU使用率差异

C# Azure SQL-DTU CPU使用率差异,c#,azure-sql-database,connection-pooling,C#,Azure Sql Database,Connection Pooling,我一直在分析一个在Azure SQL中运行的数据库,它的性能非常差。它位于高级层,提供1750个DTU,有时仍可以最大限度地使用DTU 通过存储过程,我发现了各种各样的查询和糟糕的数据访问模式,从而降低了负载。但在下图中,DTU和CPU使用率之间仍然存在巨大差异,我在azure sql中看到的查询性能透视图中的任何其他图像都显示了DTU线在很大程度上与CPU使用率保持一致 查看位于本文顶部的C应用程序,对于使用该应用程序的每个用户,它将创建一个SQL用户,并在连接字符串中使用该用户访问数据库。这

我一直在分析一个在Azure SQL中运行的数据库,它的性能非常差。它位于高级层,提供1750个DTU,有时仍可以最大限度地使用DTU

通过存储过程,我发现了各种各样的查询和糟糕的数据访问模式,从而降低了负载。但在下图中,DTU和CPU使用率之间仍然存在巨大差异,我在azure sql中看到的查询性能透视图中的任何其他图像都显示了DTU线在很大程度上与CPU使用率保持一致

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

或者我可能遗漏了一些在Azure门户中看不到的关于IO的信息

谢谢 尼尔

编辑:添加会话和工作人员图像

基于这一点,我现在还不确定。。会话的百分比是多少?喜欢10%,但10%是什么?允许的最大值是多少

编辑2:添加更多指标:

一周:

高负荷时2-3小时:


紫色的刺我相信是重新索引,所以可以忽略它

试图理解DTU与资源之间的区别对我来说也是一个绊脚石。单击资源利用率图表,然后单击编辑

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


现在,您应该找到查询中的实际成本。了解查询如何使用不同的资源可以帮助您解决这些性能问题。我在做大型插入时了解到了这一点,我正在最大限度地使用我的日志IO,其他一切都是查看查询存储中占用最多的CPU时间。是的,我这样做了,但正如我所附的图片所示,前20个查询的CPU使用率仅使用了约5-10%,您将看到,DTU的使用率始终高出约30%,有时甚至会达到接近100%的DTU使用率!!其他数据库的DTU和CPU通常相互跟踪,如查询ID122使用61.5%!把前五名加在一起,你几乎达到了85%,我肯定会看看你是否能提高122。如果可能的话,发布一个查询计划。这是我给你的一个例子,展示了DTU是如何紧密地映射到CPU使用率的。。。查看我的原始帖子和性能图的实际屏幕截图。有人吗。。。。。。。。。。。。我在我最初的回答中添加了这张图片,你觉得这有什么不正确的地方吗?我猜员工人数略高/鉴于您最初的症状,您的员工人数和疗程没有我预期的那么高。您是否可以使用CPU、数据IO和日志IO的其他百分比在其中一个峰值期间收集另一个图像?根据最后一张图片,其中一张应该接近93.23%。一旦您找到最高的资源,我们就有办法进一步排除故障!好啊我发现90%左右的峰值每天发生一次!!它不能解释这么高的负载,我相信在我能得到的最大azure sql实例上大约30台pc!!好的,因为您不在传统的SQL实例中,所以不需要重新编制索引。你不能以完全相同的方式来看待光盘访问。查询速度是否显著减慢,这就是您重建索引的原因?您是否在重建之前检查碎片级别,以确定重组是否是更好的选择?