2010-11-19 21 views
1

大量のデータをSQLサーバーに挿入する方法を評価しています。私は、Ado.NetのSqlBulkCopyクラスとOLEDBのIRowsetFastLoadインターフェイスを見つけました。私の知る限り、IRowsetFastLoadは私のベースプラットフォームであるC#にはマッピングされないので、IRowsetFastLoadの周りにラッパーを作成する価値があるかどうかを評価しています。SQLでのバルクデータの挿入:OLEDB IRowsetFastLoadとAdo.Netの比較SqlBulkCopy

IRowsetFastLoadが実際にSqlBulkInsertよりも優れたパフォーマンスを発揮するかどうかは誰もが知っています。このようなラッパーを作成する価値はありますか?

答えて

2

SqlBulkCopyは、IRowsetFastLoadと同等の管理対象であり、同様に動作するはずです。クライアントでは、一般的なルールとして、OleDBはADO.Netよりも高速であり、バインディングの可用性のために、APIの内外へのデータの転送が高速になります(バッファは先行、固定、割り当てられた)。 ADO.Netははるかに簡単なプログラミングモデルを提供しますが、ADO.Netからコピーを除いてデータを取得することはできません。しかし、最も重要なアクセスを除いて、その違いは測定不可能でなければなりません。

サーバーのアクセスに問題がある場合は、両方とも高速ロードINSERT BULK API(ストレートT-SQLでは使用できません)と実際に重要なことを使用します。

+0

したがって、実際にIRowsetFastLoad OLE DB用の.netラッパーを作成すると、基本的には、最終的にSqlBulkCopyを使用するよりも、コンポーネントの実行速度を遅くすることができる相違点を導入していますか? –

+0

ネイティブ/管理オーバーヘッドからの相互運用とマーシャリングについては考えていませんが、間違いなくオーバーヘッドが増えるでしょう。 –

関連する問題