c# - SQL Server 存储过程在网络集群中执行得更好吗?

标签 c# sql sql-server stored-procedures database-performance

据我所读,与仅在 C# 中构建命令并在程序代码中显式调用它们相比,使用存储过程似乎具有边际性能优势,至少在涉及共享服务器程序和数据库的机器时引擎(当程序很简单时)。大多数人似乎认为这是一个“偏好问题”,并添加了一些其他的小好处来证明他们的理由。

但是,我找不到任何相关信息,那就是当数据库引擎位于与主应用程序不同的物理机器上时存储过程的好处。

如果我没记错的话,在服务器场中,存储过程不会从主服务器应用程序卸载某些 cpu 线程上的处理,并在数据库引擎服务器的 cpu 上完成主要处理吗?或者,当 C# 库“构建”供数据库引擎处理的信息时,这是否已经在数据库引擎的 CPU 上完成了?

具体来说,我有一个长时间运行的事务,我可以在 C# 事务 block 中进行多次调用,但我怀疑存储过程实际上会通过减少对数据库引擎的网络调用而获得巨大的性能优势,因为以及保证处理不在主服务器应用程序上完成。

这是真的吗?

最佳答案

存储过程(与 Dapper 或 Entity Framework 之类的 OR/M 相比)的性能提升可以从几乎相同到非常显着的性能改进不等。我认为如果不查看将被转换为存储过程的代码,就无法回答您的问题。

话虽如此,根据我进行单个存储过程调用与从应用程序代码调用多个语句的经验,是的,它可能会更快。

关于c# - SQL Server 存储过程在网络集群中执行得更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31841271/

相关文章:

c# - 如何将此 javascript 函数放置在外部文件中以供用户控制?

c# - 为什么模数运算符不适用于 c# 中的 double?

c# - .NET Core X509Certificate2 使用(Windows/IIS、Docker、Linux下)

mysql - SQL 查询包括带连字符的多种格式

sql - SQL Server中根据条件进行计数

c# - 如何将数据逐列写入 csv 文件

sql - 创建一个触发器,在更新列时将值插入到新表中

mysql - 在mysql数据库中随机获取特定实体的记录

sql - 计算 postgresql 中的再入院率

sql-server - NULL 参数检查 - WHERE 与 IF