最大化Azure SQL DTU与SQL内部代码,但不是从SQL Server管理工作室



我有一个有点滑稽的情况。对于某个查询,我们的Azure SQL实例的最大值为100 DTU,查询返回超时:

SqlException (0x80131904): Timeout expired.  The timeout period
elapsed prior to completion of the operation or the server is not
responding.  This failure occurred while attempting to connect to the
routing destination.

如果我在SQL Server管理工作室运行完全相同的查询(参数硬编码),它仍然需要DTU高达25%,但这离100%还很远。该服务器上没有运行其他任何东西。还有一些其他查询在之前/之后运行。但如果我们只是运行它们,就不会出现任何峰值。

任何想法?

我对这个问题的分析是这样的……

首先,当DTU达到最大值时,如果查询因此而失败,您将不会获得超时,下面是您将获得的错误消息…

资源ID: %d。数据库的%s限制是%d,已经达到。查看更多信息

你可以通过打开多个资源密集型查询来测试

其次,当你超时时,正如你的问题所指出的,这主要是由于查询等待资源,比如一些数据库IO,内存…

我们面临着类似的超时,但大多数都是通过更新统计和重建索引来修复的,其余的我们优化了

最新更新