Sql Azure - 查询 'empty table' 的最大 DTU 百分比
Sql Azure - maxing DTU Percentage querying a 'empty table'
我在过去一个月左右的时间里一直遇到数据库问题...(11 月还好)。
(S0 标准层 - 甚至不是最低层。)- 已在更新 5
中修复
Select 语句导致我的数据库节流(甚至超时)。
为了确保这不仅仅是我的数据库的问题,Ive:
- 已复制数据库...两者都存在相同问题(除非增加层大小)。
- 删除数据库,重新创建数据库(空白数据库) from entity framework code-first
第二个更有趣。现在我的数据库有 'no' 数据,它仍然使 DTU 达到峰值并使事情无响应。
首先...这正常吗?
我的工作中确实有更复杂的数据库,它们在同一级别 (s0) 最多使用大约 10% 的 dtu。所以我很困惑。这只是一个用户,一个数据库,目前是空的,我可以让它停止响应。
更新 2:
来自副本 ("the one with data 10000~ records")。我将它升级到标准 S2(可能比 s0 强大 5 倍。没问题。
Down-graded 再次到 S0 并且
开启统计信息输入
设置统计时间
select * 来自竞赛 -- 此处有 6 条记录...
SQL 服务器解析编译时间:
CPU 时间 = 0 毫秒,经过的时间 = 1 毫秒。
SQL 服务器执行时间:
CPU 时间 = 0 毫秒,经过的时间 = 0 毫秒。
SQL 服务器执行时间:
CPU 时间 = 0 毫秒,经过的时间 = 0 毫秒。
(6 row(s) affected)
Table'Competitions'。扫描计数 1,逻辑读取 3,物理读取 1,read-ahead 读取 0,lob 逻辑读取 0,lob 物理读取 0,lob read-ahead 读取 0.
SQL 服务器执行时间:
CPU 时间 = 407 毫秒,经过的时间 = 21291 毫秒。
我是否怀念对 Azure 数据库的理解,他们需要继续热身?如果我再次 运行 相同的查询,它将是立即的。如果我关闭连接并再次执行它,它会回到约 20 秒。
更新 3:
s1 级别,它在 ~1 秒时第一次执行上面相同的查询
更新 4:
又是s0级别...第一次查询...
(6 row(s) affected)
Table'Competitions'。扫描计数 1,逻辑读取 3,物理读取 0,read-ahead 读取 0,lob 逻辑读取 0,lob 物理读取 0,lob read-ahead 读取 0.
SQL 服务器执行时间:
CPU 时间 = 16 毫秒,经过时间 = 35 毫秒。
除了层之外,这些数据库没有任何变化。在 s0 上我的一个实时站点(不同的数据库、模式和数据)上漫游之后……它达到了 14.58% 的峰值(它是一个统计站点)
这不是我最好的调查。但是我累了 :D
如果有人好奇,我可以提供更多更新。
** 更新:5 - 固定排序 **
前几个 100% 峰值是相同的 table。在更新模式并删除地理字段(该列中的数据为空)后,它已移至较晚的较小峰值 ~1-4%,结果时间回到非常低的毫秒。
感谢您的帮助,
马特
造成 100% DTO 瘫痪的问题的原因是 GEOGRAPHY 字段:
http://msdn.microsoft.com/en-gb/library/cc280766.aspx
从我的查询中删除它解决了这个问题。从我的 EF 模型中删除它有望确保它永远不会回来。
我确实想在 Azure 中使用地理字段(最终可能不会持续几个月),所以如果有人知道为什么它会导致意外数量的 DTU 花费在(当前始终为空)列上这对未来的知识非常有用。
我在过去一个月左右的时间里一直遇到数据库问题...(11 月还好)。 (S0 标准层 - 甚至不是最低层。)- 已在更新 5
中修复Select 语句导致我的数据库节流(甚至超时)。 为了确保这不仅仅是我的数据库的问题,Ive:
- 已复制数据库...两者都存在相同问题(除非增加层大小)。
- 删除数据库,重新创建数据库(空白数据库) from entity framework code-first
第二个更有趣。现在我的数据库有 'no' 数据,它仍然使 DTU 达到峰值并使事情无响应。
首先...这正常吗?
我的工作中确实有更复杂的数据库,它们在同一级别 (s0) 最多使用大约 10% 的 dtu。所以我很困惑。这只是一个用户,一个数据库,目前是空的,我可以让它停止响应。
更新 2: 来自副本 ("the one with data 10000~ records")。我将它升级到标准 S2(可能比 s0 强大 5 倍。没问题。 Down-graded 再次到 S0 并且
开启统计信息输入 设置统计时间 select * 来自竞赛 -- 此处有 6 条记录...
SQL 服务器解析编译时间: CPU 时间 = 0 毫秒,经过的时间 = 1 毫秒。
SQL 服务器执行时间: CPU 时间 = 0 毫秒,经过的时间 = 0 毫秒。
SQL 服务器执行时间: CPU 时间 = 0 毫秒,经过的时间 = 0 毫秒。
(6 row(s) affected)
Table'Competitions'。扫描计数 1,逻辑读取 3,物理读取 1,read-ahead 读取 0,lob 逻辑读取 0,lob 物理读取 0,lob read-ahead 读取 0.
SQL 服务器执行时间: CPU 时间 = 407 毫秒,经过的时间 = 21291 毫秒。
我是否怀念对 Azure 数据库的理解,他们需要继续热身?如果我再次 运行 相同的查询,它将是立即的。如果我关闭连接并再次执行它,它会回到约 20 秒。
更新 3: s1 级别,它在 ~1 秒时第一次执行上面相同的查询
更新 4: 又是s0级别...第一次查询...
(6 row(s) affected)
Table'Competitions'。扫描计数 1,逻辑读取 3,物理读取 0,read-ahead 读取 0,lob 逻辑读取 0,lob 物理读取 0,lob read-ahead 读取 0.
SQL 服务器执行时间: CPU 时间 = 16 毫秒,经过时间 = 35 毫秒。
除了层之外,这些数据库没有任何变化。在 s0 上我的一个实时站点(不同的数据库、模式和数据)上漫游之后……它达到了 14.58% 的峰值(它是一个统计站点)
这不是我最好的调查。但是我累了 :D 如果有人好奇,我可以提供更多更新。
** 更新:5 - 固定排序 **
前几个 100% 峰值是相同的 table。在更新模式并删除地理字段(该列中的数据为空)后,它已移至较晚的较小峰值 ~1-4%,结果时间回到非常低的毫秒。
感谢您的帮助, 马特
造成 100% DTO 瘫痪的问题的原因是 GEOGRAPHY 字段: http://msdn.microsoft.com/en-gb/library/cc280766.aspx
从我的查询中删除它解决了这个问题。从我的 EF 模型中删除它有望确保它永远不会回来。
我确实想在 Azure 中使用地理字段(最终可能不会持续几个月),所以如果有人知道为什么它会导致意外数量的 DTU 花费在(当前始终为空)列上这对未来的知识非常有用。