从 ORACLE 读取的最快 OLEDB

Posted

技术标签:

【中文标题】从 ORACLE 读取的最快 OLEDB【英文标题】:Fastest OLEDB read from ORACLE 【发布时间】:2011-03-30 21:28:22 【问题描述】:

通过 OLEDB 从 Oracle DB 检索数据的最快方法是什么?

它应该是可移植的(必须在 Postgres 和 MS SQL 上工作),只传输一列(来自某个大表的 ID)。

当前性能为 100k 行/秒。如果我想让它跑得更快,是不是期望太高了?

澄清:

数据表有 2300 万条记录

查询是:从对象中选择 ID

瓶颈是从oracle转移到客户端软件,即c++/OLEDB

【问题讨论】:

你的问题有点不够详细。您的客户如何使用这些行?排序顺序重要吗?一共有多少行?执行的查询复杂吗?网络流量有影响吗?磁盘 i/o 有影响吗? 同意 APC。没有比这个简单的 select 语句更快的方法了,但其他变量可能会产生影响。 使用“WHERE”子句?从 id = 条件的对象中选择 id。或者,查看“之间” 伙计们,我说的是最快传输的技术,至少需要从数据库中获取数据的开销。我需要所有数据,无论如何查询都是任意的。今天有 23M 条记录,明天将有 23B 条记录。我在这里需要 ezoterics,例如 Oracle 存储过程,它将在一端 LZW 数据并将其输出为单个 blob 结果。 带有千兆交换机的千兆(或更高)网络连接...并且可能连接到上帝运行的服务器? :-) 【参考方案1】:

什么鬼,我会冒险的。

编辑:至于连接性,我 HEARTILTY 建议:

Oracle Objects for OLE,简称OO4O。

它是由 Oracle 为 Oracle 而不是 MS 制造的。它使用高性能本机驱动程序,而不是 ODBC 来提高性能。我个人曾多次亲自使用过它,而且速度很快。我正在连接到非常大的数据库和数据仓库,其中每个表的记录都不会少于 200 万条,而且大多数都大得多。

请注意,您无需了解 OLE 即可使用它。它包装了 OLE,因此得名。从概念上和句法上讲,它将“结果集”包装到由 SQL 命令提供的动态集中。如果您曾经使用过 DAO 或 ADO,您将在 5 分钟内提高工作效率。

这里有更深入的article.

如果你不能使用OO4O,那么Oracle 做的专门的.Net Data Provider 是很好的。不是 MS 做的。

HTH


使用“WHERE”子句?示例:“从 id = 条件的对象中选择 id”

WHERE

这只会通过网络发送感兴趣的记录。否则,所有 2300 万条记录都会通过网络发送。

或者,查看“之间”。

"从 id 介于 thisone 和 thatone 之间的对象中选择 id"

BETWEEN

这会在您指定的范围内发送一组减少的记录。

HTH

【讨论】:

以上是关于从 ORACLE 读取的最快 OLEDB的主要内容,如果未能解决你的问题,请参考以下文章

C# OLEDB读取EXCEL的数据为空值

从 C# 处理 dbf 的最快方法

阅读大型 Excel 文档

从 Java 中读取 System.in 的最快方法是啥?

从文本文件中读取数据并将其分配给数据框的最快方法是啥?

从多个文件中读取大数据并在python中聚合数据的最快方法是啥?