gpt4 book ai didi

c# - 1 个对执行 3 件事的存储过程的异步调用与 3 个对执行一件事的存储过程的异步调用?

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:33 24 4
gpt4 key购买 nike

并不是说当前设置做 3 件事的单个存储过程花费的时间太长。但也许为了加快速度,当用户可以看到一些信息时会很有用。

我有一个以 async/await 模式运行并返回 3 个独立数据集的存储过程。它们都不需要其他 2 个中的任何一个,因此顺序和谁先完成不是问题。因此,在整个 SP 运行并返回之前,用户将看不到网页上的任何内容。

除了更多代码(这是不可取的)之外,将该 SP 分成 3 个独立的 SP 并对这些 SP 进行 3 个独立的 async 调用是否更有意义?

附带说明一下,仍然有一个 SP 但有一个新的 @Which 参数是否有意义?意思是当@Which = 1查询这个数据,当@Which = 2查询那个数据等等。或者尝试通过 3 个单独的 async 调用多次运行同一个 SP 会出现某种延迟吗?

我做了一些研究 - Why should I prefer single 'await Task.WhenAll' over multiple awaits?是很好的信息,但不是真正适合我的问题。

最佳答案

一如既往,这个问题确实没有正确或错误的答案。但是,有专门解决此问题的开发模式。

我不认为让存储过程返回多个结果集是一件坏事,但是您提到结果集彼此独立。我对该声明的理解是,SP 正在执行 3 个不同的工作单元,并且可以、应该并且将会有一个不依赖于另一部分操作结果的结果集。我认为这违背了单一职责原则。 https://en.wikipedia.org/wiki/Single_responsibility_principle

如果您曾经不得不更新存储过程的一部分,那么您现在必须接触整个存储过程并可能更改与请求的更改无关的内容。

如果您只需要获取存储过程结果的一部分,您仍然需要获取过程中的所有结果集,这可能是没有理由的。

现在我可能会争辩说,如果所有 3 个结果集都依赖于相同的工作数据集,那么这将是一种可接受的方法。需要保证它们在所有结果集中都相似的工作集。例如,详细结果集和一些不同的聚合版本,或具有某些特定连接条件的内容。理想情况下,还有其他方法可以处理其中的一些问题。

从数据库可维护性的角度来看,我建议进行这 3 个单独的调用/存储过程。

关于c# - 1 个对执行 3 件事的存储过程的异步调用与 3 个对执行一件事的存储过程的异步调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33367687/

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