Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Дестинация на SQL Server спрямо местоназначение на OLE DB

В този отговор ще се опитам да предоставя информация от официалната документация на SSIS и ще спомена личния си опит с дестинацията на SQL Server.

1. Дестинация на SQL Server

Според официалната документация на SQL Server Destination:

Дестинацията на SQL Server се свързва с локална база данни на SQL Server и групово зарежда данни в таблици и изгледи на SQL Server. Не можете да използвате дестинацията на SQL Server в пакети, които имат достъп до база данни на SQL Server на отдалечен сървър. Вместо това пакетите трябва да използват дестинацията OLE DB.

Дестинацията на SQL Server предлага същото високоскоростно вмъкване на данни в SQL Server, което предоставя задачата Bulk Insert; обаче, като използва дестинацията на SQL Server, пакетът може да приложи трансформации към данните в колоната, преди данните да бъдат заредени в SQL Server.

За зареждане на данни в SQL Server, трябва да обмислите използването на дестинацията на SQL Server вместо дестинацията на OLE DB

2. OLEDB Дестинация

Според официалната документация на OLEDB Destination:

OLEDB Destination – опция за бързо зареждане:Заредете данни в таблица или изглед в дестинацията OLE DB и използвайте опцията за бързо зареждане, която е оптимизирана за групови вмъквания

3. OLEDB Destination срещу SQL Server Destination

Съгласно SQL Server Destination Vs OLE DB Destination - MSDN тема:

Доналд Фармър, бившият програмен мениджър на групата за услуги за интеграция, каза, че можете да получите 5 до 10% увеличение на производителността с помощта на SQL Server Destination .

Освен това, позовавайки се на следната публикация на Мат Масон, специалист по интегриране на данни в Microsoft, където той отговори на следния въпрос:

Трябва ли да използвам местоназначението на SQL Server?

Отговорът беше

Не

...

Моята препоръка е, че ако имате нужда от всяка част от производителността (10% увеличение на производителността при 10-часово натоварване може да бъде значително), изпробвайте SQL Server Destination, за да видите как работи за вас. Въпреки това – имайте предвид следните ограничения на местоназначението на SQL Server:

  • Трябва да имате SSIS, работещ на същата машина като целевата база данни
  • Трябва да стартирате пакета като администратор
  • Много е трудно да се отстраняват грешки, когато нещата се объркат

Предвид тези ограничения, препоръчвам да използвате OLE DB Destination дори ако виждате увеличение на производителността с целта на SQL Server.

3.1. Ръководството за ефективност при зареждане на данни

(Актуализация @ 25.03.2019)

Докато търсех най-добрите практики за SSIS, намерих много полезна статия на Microsoft, която може да се използва като справка:

  • Ръководство за ефективност при зареждане на данни

В тази статия те направиха сравнение между всички методи за зареждане на данни, включително дестинация на SQL Server и дестинация OLEDB, те споменаха, че:

Дестинация на SQL сървър Дестинацията на SQL Server е най-бързият начин за групово зареждане на данни от поток от данни на Integration Services към SQL Server. Тази дестинация поддържа всички опции за групово зареждане на SQL Server – с изключение на ROWS_PER_BATCH.

Имайте предвид, че тази дестинация изисква връзки със споделена памет към SQL Server. Това означава, че може да се използва само когато Integration Services работи на същия физически компютър като SQL Server.

ОЛЕ DB Дестинация: Дестинацията OLE DB поддържа всички опции за групово зареждане за SQL Server. Въпреки това, за да се поддържа поръчано насипно натоварване, е необходима допълнителна конфигурация. За повече информация вижте „Сортирани входни данни“. За да използвате груповия API, трябва да конфигурирате тази дестинация за „бързо зареждане“.

Дестинацията на OLE DB може да използва както TCP/IP, така и връзки с именувани канали към SQL Server. Това означава, че местоназначението на OLE DB, за разлика от дестинацията на SQL Server, може да се изпълнява на компютър, различен от целта за групово натоварване. Тъй като пакетите на Integration Services, които използват местоназначението на OLE DB, не трябва да се изпълняват на самия компютър на SQL Server, можете да мащабирате ETL потока с работни сървъри.

3.2. Личен опит

(Актуализация @ 25.03.2019)

Тъй като този въпрос се използва като справка от мнозина и след като имах по-голям опит в този домейн, добавих този раздел, за да спомена личния си опит с дестинацията на SQL Server.

Въпреки че в официалната документация се споменава, че дестинацията на SQL Server ще увеличи производителността, аз изобщо не препоръчвам използването на тези компоненти поради много причини:

  1. Изисква целевият сървър и ETL сървърът да са едни и същи (работи само с локален SQL сървър)
  2. Винаги хвърля изключения, които нямат никакво значение
  3. След тестване върху огромен обем данни разликата в производителността с дестинацията OLEDB е незначителна (тествано върху около 500 GB данни, заредени на парчета и разликата във времето е по-малко от една минута)

Можете също да се обърнете към следната публикация (от @billinkc) за да получите повече информация по тази тема:

  • Трябва ли SSIS пакетите и SQL базата данни да са на един и същ сървър?

4. Заключение

Въз основа на статии на Microsoft можете да кажете, че SQL Server Destination увеличете производителността на вмъкване на данни (използва ОБЕМНО вмъкване) , но е проектиран за конкретен случай, който е локалният SQL сървър. OLEDB Destination е по-общ и препоръчителен в останалите случаи и с помощта на Fast Load режим на достъп до данни (който също така използва ОБЕМНО вмъкване) на OLE DB destination това ще увеличи производителността на зареждане на данни.

От друга страна, въз основа на моя опит и от много статии, написани от експерти по SSIS, изобщо не се препоръчва използването на SQL Server Destination тъй като не е стабилен и често хвърля изключения и производителността може да се счита за незначителна.

Допълнителна информация

Наскоро публикувах подробна статия по тази тема. Можете да го проверите на:

  • SSIS OLE DB местоназначение срещу местоназначение на SQL сървър


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SqlConnection SqlCommand SqlDataReader IDisposable

  2. Преобразуване на ‘time’ в ‘smalldatetime’ в SQL Server (T-SQL примери)

  3. Ескейпиращ символ в SQL Server

  4. Предаване на масив от ints към T-SQL съхранена процедура чрез структура на обекти

  5. Как мога да премахна дублиращи се редове?