只需查询Premium Azure SQL DB Elastic Pool就可以使用DTU了

时间:2016-06-29 18:47:50

标签: azure-sql-database

以下是我的情况:

在Azure中,我们有一个弹性数据库池,它是Premium 1000 eDTU池。我们有6个数据库。其中一个数据库定期运行报告数据的合并和聚合,并且已经持续数周,MAX eDTU约为60%,平均约为40%。

本周一,一切都开始变废乱。我们没有改变任何事情。查看azure门户网站中的数据库度量标准以及sys.dm_db_resource_stats视图,我们的CPU%在长达一小时的块中受到99-100%的打击,而该视图中的内存始终为10%左右。我们有关于此数据库运行的报告,并且一些查询(在管理工作室中运行时)将使服务器瘫痪。这些也不是写得不好或巨大的查询。例如,我们有一个运行两个CTE的查询,并将结果连接在一起以进行最终输出。第一个返回30个记录,第二个返回20个(每个返回4-5列)。当我参数化查询并简单地选择它在< 1s中运行的单个结果集时,但是当我进行简单连接时,我不得不终止执行,因为它在10分钟时占用了池中99.9%的eDTU。请接受我的说法,这是一个简单的结果集上的简单连接。

我用表变量替换了CTE并获得了相同的结果。然后我用临时表(#tables)替换了表变量,瞧!查询在~2s ...

中运行

是否有人知道上限或节流?以下是过去8天左右的数据库使用情况统计信息图表:

enter image description here

正如你所看到的,早在6月27日,事情就开始变得混乱......任何见解都会受到高度赞赏。

0 个答案:

没有答案