Azure SQL Server SUM查询随机超时

时间:2018-12-08 17:17:05

标签: sql azure azure-sql-database

我们具有相对较高的SQL数据库负载信息,该数据库托管在Azure云上。要计算用户帐户的余额,我们每次都会汇总所有支出(entry表)。我知道我们可以采取不同的方法,但是即使在entry表的情况下,当前的解决方案在绝对多数情况下也能很好地工作,并且HTTP平衡请求平均大约需要134毫秒(这不仅包括有问题的查询)。包含数千亿行(我们有很多帐户,每个帐户没有那么多操作)。

我们的 SQL (在NHibernate之后稍微美化了-删除了列和表别名)

select AccountId, cast(sum(Amount) as DECIMAL(19,5)) as Balance
from entry
where  not (Locked=1) and (AccountId in (@p0))
group by AccountId

快速执行查询的执行计划(不确定是否有帮助): enter image description here 因此查询使用的索引包括AccountId,Locked以及之后的另外两列。

通常执行时间少于 100毫秒,但有时( 1个〜1000个请求)会挂起 30+秒< / strong>,并且在超时时失败。

我尝试使用sp_who2存储过程查找死锁,但未找到任何结果-即使我尝试了很多次并且在此期间不断抛出异常,它也没有显示任何阻塞的查询。 / p>

有趣的是,我们每分钟有数百种此类请求,但失败是一一发生的,因此两次例外之间的间隔至少为30秒,并且是30的倍数(30、60、90, 120秒-最常见的是30秒和60秒)。我无法解释这一点,但我想有些工作我不知道,它以单线程运行并阻止了特定帐户。但是我怎么找到它呢?

0 个答案:

没有答案