据我所读,与仅在 C# 中构建命令并在程序代码中显式调用它们相比,使用存储过程似乎具有边际性能优势,至少在涉及共享服务器程序和数据库的机器时引擎(当程序很简单时)。大多数人似乎认为这是一个“偏好问题”,并添加了一些其他的小好处来证明他们的理由。
但是,我找不到任何相关信息,那就是当数据库引擎位于与主应用程序不同的物理机器上时存储过程的好处。
如果我没记错的话,在服务器场中,存储过程不会从主服务器应用程序卸载某些 cpu 线程上的处理,并在数据库引擎服务器的 cpu 上完成主要处理吗?或者,当 C# 库“构建”供数据库引擎处理的信息时,这是否已经在数据库引擎的 CPU 上完成了?
具体来说,我有一个长时间运行的事务,我可以在 C# 事务 block 中进行多次调用,但我怀疑存储过程实际上会通过减少对数据库引擎的网络调用而获得巨大的性能优势,因为以及保证处理不在主服务器应用程序上完成。
这是真的吗?
最佳答案
存储过程(与 Dapper 或 Entity Framework 之类的 OR/M 相比)的性能提升可以从几乎相同到非常显着的性能改进不等。我认为如果不查看将被转换为存储过程的代码,就无法回答您的问题。
话虽如此,根据我进行单个存储过程调用与从应用程序代码调用多个语句的经验,是的,它可能会更快。
关于c# - SQL Server 存储过程在网络集群中执行得更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31841271/