它是一个好主意,重新使用ADO.NET命令对象?
-
20-09-2019 - |
题
我的工作,对数据库执行任意脚本.NET程序。
当一个运动课开始写数据库访问代码,他简单地暴露一个命令对象,其被再次使用该应用程序的其余部分(设置CommandText
/ Type
,主叫ExecuteNonQuery()
等)为每个语句。
我想象这是重复,相同的语句的大的性能损失,因为它们被解析每次重新
我想知道什么,虽然是:这会降低也执行速度,如果每个语句是从以前的一个(不只是不同的参数,而是一个完全不同的说法)有什么不同?我是不会轻易找到该文件中的答案。
顺便说一句,使用的RDBMS是Oracle,但我想这个问题是不是真的特定的数据库。
P.S。我知道公开相同Command
对象不是线程安全的,但在这里,这不是一个问题。
解决方案
有是参与创建新的命令对象的一些开销,因此,在某些情况下,它可以使意义重新使用相同的命令。但被强迫为整个应用程序的一般情况下,它似乎比有点奇怪更多。
其他提示
通常打到性能来自建立与数据库的连接,但ADO.NET创建一个连接池来这里帮助。
如果你想避免解析的语句每次重新,你可以把它们转换为存储过程。
我想,你的同事只是使用了一些旧式的做法,他是从其他平台上工作,其中重用一个命令对象并有所作为继承。
不隶属于 StackOverflow