Oracle ODP.net托管与非托管驱动程序

时间:2013-07-11 00:45:04

标签: oracle odp.net

托管和非托管Oracle ODP.Net驱动程序之间是否存在任何性能基准?

(即除了简化架构/部署之外,移动到托管驱动程序是否有任何优势)

5 个答案:

答案 0 :(得分:24)

来自quick start video

的项目符号
  • 文件较少(最多1个或2个dll)
  • 占地面积较小(10 MB与200 MB相比)
  • 更轻松的并排部署
  • 32位和64位的相同程序集(第二次MTS程序集除外)。
  • 代码访问安全性

我不确定性能,但我怀疑它会有什么不同。我的猜测是两个驱动程序以“Oracle Net”相同的方式进行通信。虽然为准备命令和处理结果而在内存客户端操作中可能存在细微差别,但这种开销通常仅代表相对于整个事务的一小部分时间。大部分成本/时间花费在物理IO中的服务器上并将数据传输回客户端。这与从oledb提供程序或System.DataAccess.OracleClient驱动程序进行的操作完全不同。这是来自同一RDBMS公司的另一个版本 - 他们将利用其他客户使用的所有相同的性能技巧。我希望我可以发表一项研究,但我猜这样的事情不存在,因为最终它会不起眼。一个没有新闻的例子是好消息 - 如果新的提供商在某种程度上更糟糕,你会读到它。

简单就是切换到这个IMO的充分理由。绝大多数开发人员和管理员并不完全了解提供程序及其与非托管客户端的关系。关于oracle主页偏好,版本不匹配,升级等的困惑不断出现。消除这些问题将是一个值得欢迎的变化。

答案 1 :(得分:23)

我想分享一些结果。我认为与部署的简易性相比,性能的缺乏是值得的。

enter image description here

注意:seg表示秒。对不起。

当然这是一个简单的测试,有几个主题没有包括连接池,稳定性,可靠性等......

值得一提的是,方案已执行了100次。因此,时间量是100次执行的平均值。

答案 2 :(得分:11)

这是你们所有人的问题。花了几个星期的时间来弄清楚为什么Oracle托管驱动程序不能使用ef6连接。如果您的数据库具有以下数据完整性算法,那么您必须使用非托管驱动程序!

深埋在oracle文档中!谢谢ORACLE !!!!! enter image description here

答案 3 :(得分:3)

更简单的部署和位数独立性是非常好的好处,但您应该彻底评估典型的驱动程序使用情况。在64位进程中使用新的托管驱动程序时,我遇到了近50%的性能差点。其他人在Oracle论坛上报告了内存泄漏等问题:https://forums.oracle.com/community/developer/english/oracle_database/windows_and_.net/odp.net。它看起来像是一种典型的Oracle有缺陷的产品,需要更多的月/年才能解决:/

答案 4 :(得分:1)

请注意,我们还不支持自定义类型。这可能是不切换到托管驱动程序的原因。

有关托管和非托管版本之间的差异,请参阅此Oracle文档:

http://docs.oracle.com/cd/E16655_01/win.121/e17732/intro004.htm