从 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的主要内容,如果未能解决你的问题,请参考以下文章