Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Tujuan SQL Server vs Tujuan OLE DB

Dalam jawaban ini, saya akan mencoba memberikan informasi dari dokumentasi resmi SSIS dan saya akan menyebutkan pengalaman pribadi saya dengan tujuan SQL Server.

1. Tujuan SQL Server

Menurut dokumentasi resmi SQL Server Destination:

Tujuan SQL Server terhubung ke database SQL Server lokal dan memuat data secara massal ke dalam tabel dan tampilan SQL Server. Anda tidak dapat menggunakan tujuan SQL Server dalam paket yang mengakses database SQL Server di server jauh. Sebagai gantinya, paket harus menggunakan tujuan OLE DB.

Tujuan SQL Server menawarkan penyisipan data berkecepatan tinggi yang sama ke dalam SQL Server yang disediakan tugas Massal Insert; namun, dengan menggunakan tujuan SQL Server, sebuah paket dapat menerapkan transformasi ke data kolom sebelum data dimuat ke SQL Server.

Untuk memuat data ke SQL Server, Anda harus mempertimbangkan untuk menggunakan tujuan SQL Server alih-alih tujuan OLE DB

2. Tujuan OLEDB

Menurut dokumentasi Tujuan OLEDB resmi:

Tujuan OLEDB - opsi pemuatan cepat:Muat data ke dalam tabel atau tampilan di tujuan OLE DB dan gunakan opsi pemuatan cepat, yang dioptimalkan untuk penyisipan massal

3. Tujuan OLEDB vs Tujuan SQL Server

Menurut Tujuan SQL Server Vs OLE DB Destination - topik MSDN:

Donald Farmer, mantan Manajer Program Grup untuk Layanan Integrasi mengatakan bahwa Anda bisa mendapatkan peningkatan kinerja sebesar 5 hingga 10% menggunakan SQL Server Destination .

Selain itu, mengacu pada posting berikut dari Matt Masson, spesialis integrasi data di Microsoft di mana dia menjawab pertanyaan berikut:

Haruskah saya menggunakan Tujuan SQL Server?

Jawabannya adalah

Tidak

...

Rekomendasi saya adalah jika Anda membutuhkan setiap kinerja (peningkatan kinerja 10% pada beban 10 jam bisa menjadi signifikan), cobalah SQL Server Destination untuk melihat cara kerjanya untuk Anda. Namun – ingat batasan berikut dari Tujuan SQL Server:

  • Anda harus menjalankan SSIS pada mesin yang sama dengan database tujuan
  • Anda harus menjalankan paket sebagai administrator
  • Sangat sulit untuk melakukan debug saat terjadi kesalahan

Mengingat keterbatasan ini, Saya sarankan menggunakan OLE DB Destination bahkan jika Anda melihat peningkatan kinerja dengan SQL Server Destination.

3.1. Panduan Performa Pemuatan Data

(Pembaruan @ 25-03-2019)

Saat mencari praktik terbaik SSIS, saya menemukan artikel Microsoft yang sangat membantu yang dapat digunakan sebagai referensi:

  • Panduan Performa Pemuatan Data

Dalam artikel ini mereka membuat perbandingan antara semua metode pemuatan data termasuk tujuan SQL Server dan tujuan OLEDB, mereka menyebutkan bahwa:

Tujuan SQL Server Tujuan SQL Server adalah cara tercepat untuk memuat data secara massal dari aliran data Layanan Integrasi ke SQL Server. Tujuan ini mendukung semua opsi pemuatan massal SQL Server – kecuali ROWS_PER_BATCH.

Ketahuilah bahwa tujuan ini memerlukan koneksi memori bersama ke SQL Server. Ini berarti hanya dapat digunakan ketika Layanan Integrasi berjalan di komputer fisik yang sama dengan SQL Server.

Tujuan OLE DB: Tujuan OLE DB mendukung semua opsi pemuatan massal untuk SQL Server. Namun, untuk mendukung pemuatan massal yang dipesan, beberapa konfigurasi tambahan diperlukan. Untuk informasi lebih lanjut, lihat “Data Input yang Diurutkan”. Untuk menggunakan API massal, Anda harus mengonfigurasi tujuan ini untuk "muat cepat".

Tujuan OLE DB dapat menggunakan koneksi TCP/IP dan pipa bernama ke SQL Server. Ini berarti bahwa tujuan OLE DB, tidak seperti tujuan SQL Server, dapat dijalankan di komputer selain target beban massal. Karena paket Layanan Integrasi yang menggunakan tujuan OLE DB tidak perlu dijalankan di komputer SQL Server itu sendiri, Anda dapat menskalakan aliran ETL dengan server pekerja keras.

3.2. Pengalaman pribadi

(Pembaruan @ 25-03-2019)

Karena pertanyaan ini digunakan sebagai referensi oleh banyak orang, dan setelah lebih berpengalaman dalam domain ini, saya menambahkan bagian ini untuk menyebutkan pengalaman pribadi saya menggunakan tujuan SQL Server.

Sementara dokumentasi resmi menyebutkan bahwa tujuan SQL Server akan meningkatkan kinerja, saya sama sekali tidak merekomendasikan menggunakan komponen ini karena berbagai alasan:

  1. Ini membutuhkan server tujuan dan server ETL yang sama (hanya bekerja dengan server SQL Lokal)
  2. Selalu membuang pengecualian yang tidak memiliki arti
  3. Setelah pengujian pada volume data yang besar, perbedaan kinerja dengan tujuan OLEDB dapat diabaikan (diuji pada sekitar 500 GB data yang dimuat dalam potongan dan perbedaan waktu kurang dari satu menit)

Anda juga dapat merujuk ke posting berikut (dari @billinkc) untuk mendapatkan informasi lebih lanjut tentang topik ini:

  • Haruskah paket SSIS dan database SQL berada di server yang sama?

4. Kesimpulan

Berdasarkan artikel Microsoft, Anda dapat mengatakan bahwa SQL Server Destination meningkatkan kinerja penyisipan data (menggunakan sisipan BULK) , tetapi dirancang untuk kasus tertentu yang merupakan server SQL Lokal. OLEDB Destination lebih umum dan direkomendasikan dalam kasus lain dan dengan menggunakan Fast Load mode akses data (yang juga menggunakan penyisipan BULK) pada OLE DB destination itu akan meningkatkan kinerja pemuatan data.

Di sisi lain, berdasarkan pengalaman saya dan dari banyak artikel yang ditulis oleh pakar SSIS, tidak disarankan sama sekali menggunakan SQL Server Destination karena tidak stabil dan sering mengeluarkan pengecualian dan kinerjanya dapat dianggap diabaikan.

Informasi Tambahan

Baru-baru ini, saya menerbitkan artikel terperinci tentang topik ini. Bisa di cek di:

  • Tujuan SSIS OLE DB Vs Tujuan SQL Server


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. String Format Tanggal/Waktu Standar Didukung oleh FORMAT() di SQL Server

  2. SQL Server BULK INSERT dari Linux

  3. Karakter Non-Angka yang Mengembalikan Positif saat menggunakan ISNUMERIC() di SQL Server

  4. Kesalahan nama kolom yang ambigu pada satu server tertentu

  5. Pernyataan KASUS SQL