简单选择计数(id)使用100%的Azure SQL DTU

chr*_*isb 13 azure sqlperformance azure-sql-database

这个问题这个问题开始,但现在似乎更恰当地问了,因为我意识到这是一个与DTU相关的问题.

基本上,运行:

select count(id) from mytable
Run Code Online (Sandbox Code Playgroud)

编辑:添加where子句似乎没有帮助.

运行8到30 分钟(而SQL Server的本地副本上的相同查询大约需要4 ).

下面是运行此查询时Azure门户中MONITOR选项卡的屏幕截图.注意我在没有触及数据库大约一周后做了这个,Azure报告我只使用了1%的DTU.

在此输入图像描述

一些额外的东西:

  • 在此特定测试中,查询运行时间为08:27.
  • 当它运行时,上面的图表实际上显示DTU线在一段时间内处于100%.
  • 数据库配置标准服务层,具有S1性能级别.
  • 数据库大约是3.3GB,这是最大的表(计数返回大约2,000,000).

我很欣赏它可能只是我有限的理解,但如果有人能够澄清这是否真的是预期的行为(即一个简单的计数需要这么长时间才能运行并最大化我的DTU),我将非常感激.

b0r*_*0rg -1

选择计数

如果有可用且最新的,则应执行聚集索引扫描。Azure SQL 应自动更新统计信息,但如果索引完全过时,则不会自动重建索引。

如果该表上有大量 INSERT/UPDATE/DELETE 流量,我建议每隔一段时间手动重建索引。

http://blogs.msdn.com/b/dilkushp/archive/2013/07/28/fragmentation-in-sql-azure.aspx

并发布更多信息

SQL Azure 和索引