Вставка массовых данных в SQL: OLEDB IRowsetFastLoad против Ado.Net SqlBulkCopy - PullRequest
1 голос
/ 20 ноября 2010

Я оцениваю различные способы вставки большого количества данных в сервер SQL.Я обнаружил SqlBulkCopy класс от Ado.Net и IRowsetFastLoad интерфейс от OLEDB.Насколько я знаю, IRowsetFastLoad не сопоставляется с C #, который является моей базовой платформой, поэтому я оцениваю, стоит ли создавать оболочку IRowsetFastLoad для .net, чтобы я мог использовать ее в своем приложении.

Кто-нибудь знает, будет ли IRowsetFastLoad работать лучше, чем SqlBulkInsert. Стоит ли создавать такую ​​оболочку?

1 Ответ

2 голосов
/ 20 ноября 2010

SqlBulkCopy является управляемым эквивалентом IRowsetFastLoad, они должны работать аналогично. В клиенте, как правило, OleDB работает быстрее, чем ADO.Net, благодаря наличию привязок, которые обеспечивают более быструю передачу данных в и из API (требуется меньше memcopy, поскольку буферы известны заранее, фиксированы и предварительно определены -allocated). ADO.Net предоставляет гораздо более простую модель программирования, но невозможно получить данные из ADO.Net без копии. Но для всех, кроме самого критического доступа, разницу невозможно измерить.

Когда дело доходит до разницы, которая имеет значение, при доступе к серверу, они оба будут использовать API INSERT BULK быстрой загрузки (недоступно из простого T-SQL) и это то, что действительно имеет значение.

...