gpt4 book ai didi

c# - SQL Azure 资源限制以及 EXEC 如何影响它

转载 作者:行者123 更新时间:2023-12-03 03:08:39 25 4
gpt4 key购买 nike

我有一个存储过程,可以从 5 个表中读取数据。从表 4 返回的数据实际上是通过 EXECuting 另一个存储过程调用的。

存储过程:

    SELECT from tbl_1
SELECT from tbl_2
SELECT from tbl_3
EXEC sproc2 -- returns rows from tbl_4
SELECT from tbl_5

有趣的是,在 C# 中对表 5 中的行执行 dataReader.NextResult 时,我意识到没有结果。这种情况并不经常发生,但我确实注意到这种情况发生了几次。

我从 SqlAzure 注意到的错误是

that database resource limit is reached.

整个存储过程不应该在单个线程中运行,并且一旦开始执行就应该不受限制使用问题的影响吗?或者是因为循环调度,SQL Server 由于资源不可用而无法重新启动我的存储过程执行?

最佳答案

Shouldn't the entire stored procedure run in a single thread

当您向 SQL Server 提交查询时,它可能会根据许多条件选择并行运行查询。其中之一是并行成本阈值。所以对于你的第一个问题,答案是这取决于

仅供引用..很多时候查询会受益于并行运行,因此并行性并不总是不好。

来到你的场景并询问..

Shouldn't the entire stored procedure run in a single thread and should be immune to limit usage issues once it starts executing?

SQL Server 可以估计查询所需的内存,并可以停止其执行(甚至不会启动),直到有足够的内存来启动..

但是在Azure DTU中,是内存、IO、CPU的组合,它们中的任何一个都可以达到其配额,并且没有办法限制查询使用有限的IO、CPU

因此,如果 DTU 受到严重限制,则在等待时间结束后,查询可以在之间停止。

为了解决此问题,Azure 提供了 performance insight通过查询了解更多关于DTU的使用情况,以便您可以对其进行微调。

通过性能洞察,您可以获得

  1. 更深入地了解您的数据库资源 (DTU) 消耗。

  2. 按 CPU/持续时间/执行计数排列的热门查询,可以对其进行调整以提高性能。

  3. 能够深入了解查询的详细信息、查看其文本和资源利用历史记录。

关于c# - SQL Azure 资源限制以及 EXEC 如何影响它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41693295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com