38

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

(即,除了架构/部署简单性之外,迁移到托管驱动程序有什么好处)

4

5 回答 5

28

我想分享一些结果。我认为与易于部署相比,性能的小小不足是值得的。

在此处输入图像描述

注:seg表示秒。对于那个很抱歉。

当然这只是一个简单的测试,还有连接池、稳定性、可靠性等几个话题没有涉及……

值得一提的是,这些场景执行了 100 次。因此,时间量是 100 次执行的平均值。

于 2014-06-30T19:32:53.197 回答
25

快速入门视频中的项目符号:

  • 更少的文件(最多 1 或 2 个 dll)
  • 占用空间更小(10 MB 与 200 MB 相比)
  • 更容易并排部署
  • 32 位和 64 位的相同程序集(第二个 MTS 程序集除外)。
  • 代码访问安全

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

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

于 2013-07-12T15:10:21.857 回答
12

这是给你们所有人的一个陷阱。我花了几个星期才弄清楚为什么 Oracle 托管驱动程序无法使用 ef6 进行连接。如果您的数据库具有以下数据完整性算法,那么您必须使用非托管驱动程序!!

深埋在oracle文档中!!!感谢甲骨文!!!!在此处输入图像描述

于 2016-03-22T15:13:12.240 回答
3

更简单的部署和位独立性确实是不错的好处,但您应该彻底评估您的典型驱动程序使用情况。在 64 位进程中使用新的托管驱动程序时,我面临近 50% 的性能障碍。其他人在 Oracle 论坛上报告内存泄漏等:https ://forums.oracle.com/community/developer/english/oracle_database/windows_and_.net/odp.net 。看起来它是一种典型的甲骨文有缺陷的产品,需要几个月/几年的时间才能安定下来:/

于 2013-11-07T16:42:35.323 回答
2

请记住,尚不支持自定义类型。这可能是不切换到托管驱动程序的原因。

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

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

于 2013-09-09T08:39:20.753 回答