【发布时间】:2018-03-02 17:55:48
【问题描述】:
我看到一个非常奇怪的超时异常,这似乎是一个非常轻量级的查询,我不知道为什么。
查询看起来像这样
var locationId = 9;
var quantities = db.OrderDetails
.Where(d => d.ANullableDate == null
&& d.Order.LocationId == locationId
&& d.AnotherNullabelDate == null
&& d.ABooleanValue)
.Select(d => new { d.SkuId, d.Quantity })
.GroupBy(d => d.SkuId)
.ToList()
.ToDictionary(grp => grp.Key, grp => grp.Sum(x => x.Quantity));
关于此的几点说明:
- 当 locationId 不是 9 时可以正常工作
- 昨天运行良好。
- 这在我的机器上运行正常。
- 当我将机器配置为使用 azure 中的数据库时,它在我的机器上运行正常。
- 如果我从 Azure 门户中提取与此查询相关的原始 SQL 并直接针对 Azure DB 运行它,它可以正常工作。
- 与其他未失败的查询相比,此查询要简单得多,并且使用的数据要少得多。
- 我通过可以找到“https://docs.microsoft.com/en-us/azure/sql-database/sql-database-connectivity-issues”的查询搜索了问题事件,但在问题发生期间没有出现任何问题。
- 如果您对
Select和ToList调用感到好奇,我在听说此问题后尝试了它们(它们没有工作)。
我完全不知道这可能是什么问题。我应该寻找什么?
更新:
它现在正在工作。在它再次开始工作之前我做的最后一件事是将数据库从 S4 降级到 S3(我这样做是因为 S4 配置处于公共预览版中)。
将其缩放回 S4 并没有导致问题再次发生,所以我不能真正假设缩放是修复它的原因。我仍然不知道出了什么问题。
【问题讨论】:
-
我喜欢“在我的机器上工作”和“昨天工作”,这就是我们的日常:)。无论如何,你检查过 ToList() 之前生成的 sql 查询吗?也许您可以在那里找到一些东西,也可以拆分查询并评估每个部分以查看哪些有效,哪些无效。
标签: c# entity-framework-6 azure-sql-database