【发布时间】:2017-05-30 17:33:25
【问题描述】:
在我们的系统上,该系统由使用数据库 sql-azure 的 Web 角色实现,我们在特定查询上遇到反复超时。
这些超时在白天会持续几个小时,然后不再出现。
查询有两个表,行数不是很高(大约 800,000 行),使用主键进行连接。
执行计划没问题,索引使用得当,查询一般需要两秒。
没有 EntityFramework 的测试给出相同的结果。
暂时性故障处理不适用于超时情况。
此行为的原因可能是什么?
【问题讨论】:
-
你的超时设置是多少?您是否尝试过更高的超时时间?超时是否与建立连接或运行查询有关?如果您的查询是 CPU 密集型的,或者如果 SQL Azure 很忙,则 SQL Azure 可能会减慢您的执行速度(CPU 节流)。
-
查询 sys.event_log 表可以帮助找到节流或连接问题的证据。
-
谢谢,一般我都是用默认的超时时间,我试过更高的超时时间,没有效果。超时与查询的执行有关。在视图 sys.event_log 中没有关于超时的日志条目。
-
这只是突出了 SQL Azure 数据库的一个问题,您在实例上获得了一个数据库。该实例上运行着其他数据库。您正在共享资源(mem/cpu/storage/network),如果该实例上用户数据库的其他用户是坏邻居,那么您无能为力。