Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

10 Metode Teratas untuk Meningkatkan Kinerja ETL Menggunakan SSIS

Extraction Transformation Load (ETL) adalah tulang punggung untuk setiap gudang data. Di dunia data warehouse data dikelola oleh proses ETL, yang terdiri dari tiga proses, Extraction-Pull/Acquire data from sources, Transformation-change data dalam format yang diperlukan dan Load-push data ke tujuan secara umum ke dalam  data warehouse atau sebuah data mart.

Pelajari SSIS dan Mulai Uji Coba Gratis Anda hari ini!

SQL Server Integration Services (SSIS) adalah alat dalam keluarga ETL yang berguna untuk mengembangkan dan mengelola gudang data perusahaan. Sebuah gudang data dengan karakterisasinya sendiri bekerja pada volume data yang besar dan kinerja merupakan tantangan besar ketika mengelola volume data yang sangat besar untuk setiap Arsitek atau DBA.

Pertimbangan Peningkatan ETL

Hari ini, saya akan membahas betapa mudahnya Anda dapat meningkatkan kinerja ETL atau merancang sistem ETL berkinerja tinggi dengan bantuan SSIS. Untuk pemahaman yang lebih baik, saya akan membagi sepuluh metode menjadi dua kategori yang berbeda; pertama, pertimbangan waktu desain paket SSIS dan kedua konfigurasi nilai properti yang berbeda dari komponen yang tersedia dalam paket SSIS.

Pertimbangan Waktu Desain Paket SSIS

#1 Ekstrak data secara paralel:SSIS menyediakan cara untuk menarik data secara paralel menggunakan wadah Urutan dalam aliran kontrol. Anda dapat mendesain paket sedemikian rupa sehingga dapat menarik data dari tabel atau file yang tidak bergantung secara paralel, yang akan membantu mengurangi waktu eksekusi ETL secara keseluruhan.

#2 Ekstrak data yang diperlukan:tarik hanya kumpulan data yang diperlukan dari tabel atau file apa pun. Anda perlu menghindari kecenderungan untuk menarik semua yang tersedia di sumber untuk saat ini yang akan Anda gunakan di masa mendatang; itu memakan bandwidth jaringan, menghabiskan sumber daya sistem (I/O dan CPU), membutuhkan penyimpanan ekstra, dan menurunkan kinerja keseluruhan sistem ETL.

Jika sistem ETL Anda benar-benar dinamis dan persyaratan Anda sering berubah, akan lebih baik untuk mempertimbangkan pendekatan desain lain, seperti ETL berbasis Meta Data, dll. daripada mendesain untuk menarik semuanya sekaligus.

#3 Hindari penggunaan komponen transformasi Asinkron:SSIS adalah alat yang kaya dengan sekumpulan komponen transformasi untuk mencapai tugas kompleks selama eksekusi ETL tetapi pada saat yang sama akan menghabiskan banyak biaya jika komponen ini tidak digunakan dengan benar.

Dua kategori komponen transformasi tersedia di SSIS:Sinkron dan Asinkron .

Transformasi sinkron adalah komponen yang memproses setiap baris dan mendorong ke komponen/tujuan berikutnya, menggunakan memori buffer yang dialokasikan dan tidak memerlukan memori tambahan karena merupakan hubungan langsung antara baris data input/output yang sepenuhnya sesuai dengan memori yang dialokasikan. Komponen seperti Pencarian, Kolom Turunan, dan Konversi Data, dll. termasuk dalam kategori ini.

Transformasi asinkron adalah komponen yang pertama menyimpan data ke dalam memori buffer kemudian memproses operasi seperti Sort dan Aggregate. Memori buffer tambahan diperlukan untuk menyelesaikan tugas dan sampai memori buffer tersedia, memori tersebut menampung seluruh data dalam memori dan memblokir transaksi, juga dikenal sebagai transformasi pemblokiran. Untuk menyelesaikan tugas, mesin SSIS (mesin pipa aliran data) akan mengalokasikan memori buffer ekstra, yang sekali lagi merupakan overhead ke sistem ETL. Komponen seperti Sort, Aggregate, Merge, Join, dll. termasuk dalam kategori ini.

Secara keseluruhan, Anda harus menghindari transformasi Asynchronous tetapi tetap saja, jika Anda masuk ke situasi di mana Anda tidak memiliki pilihan lain maka Anda harus mengetahui bagaimana menangani nilai properti yang tersedia dari komponen ini. Saya akan membahasnya nanti di artikel ini.

#4 Penggunaan acara yang optimal di pengendali acara:untuk melacak kemajuan eksekusi paket atau mengambil tindakan lain yang sesuai pada acara tertentu, SSIS menyediakan serangkaian acara. Acara sangat berguna tetapi penggunaan acara yang berlebihan akan membebani biaya tambahan pada eksekusi ETL.

Di sini, Anda perlu memvalidasi semua sifat sebelum mengaktifkan suatu peristiwa dalam paket SSIS.

#5 Perlu mengetahui skema tabel tujuan saat mengerjakan sejumlah besar data. Anda perlu berpikir dua kali ketika Anda perlu menarik sejumlah besar data dari sumbernya dan memasukkannya ke dalam gudang data atau data mart. Anda mungkin melihat masalah kinerja saat mencoba memasukkan data besar ke tujuan dengan kombinasi operasi penyisipan, pembaruan, dan penghapusan (DML), karena mungkin ada kemungkinan tabel tujuan memiliki indeks berkerumun atau tidak berkerumun, yang dapat menyebabkan banyak data yang terseret dalam memori karena operasi DML.

Jika ETL mengalami masalah kinerja karena sejumlah besar operasi DML pada tabel yang memiliki indeks, Anda perlu membuat perubahan yang sesuai dalam desain ETL, seperti menghapus indeks berkerumun yang ada dalam fase pra-eksekusi dan membuat ulang semua indeks pada fase pasca-eksekusi. Anda mungkin menemukan alternatif lain yang lebih baik untuk menyelesaikan masalah berdasarkan situasi Anda.

Konfigurasikan Properti Komponen

#6 Kontrol eksekusi paralel tugas dengan mengonfigurasi MaxConcurrentExecutables dan EngineThreads Properti. Paket SSIS dan tugas aliran data memiliki properti untuk mengontrol eksekusi paralel tugas:MaxConcurrentExecutables adalah properti tingkat paket dan memiliki nilai default -1 , yang berarti jumlah maksimum tugas yang dapat dieksekusi sama dengan jumlah total prosesor pada mesin ditambah dua;


Paket

Utas Mesin adalah properti tingkat tugas aliran data dan memiliki nilai default 10, yang menentukan jumlah total utas yang dapat dibuat untuk menjalankan tugas aliran data.


Tugas Aliran Data

Anda dapat mengubah nilai default properti ini sesuai kebutuhan ETL dan ketersediaan sumber daya.

#7 Konfigurasikan opsi mode akses data di OLEDB Destination. Dalam tugas aliran data SSIS, kita dapat menemukan tujuan OLEDB, yang menyediakan beberapa opsi untuk mendorong data ke tabel tujuan, di bawah mode Akses data; pertama, opsi "Tabel atau tampilan", yang menyisipkan satu baris pada satu waktu; kedua, opsi "Tabel atau lihat pemuatan cepat", yang secara internal menggunakan pernyataan penyisipan massal untuk mengirim data ke tabel tujuan, yang selalu memberikan kinerja yang lebih baik dibandingkan opsi lainnya. Setelah Anda memilih opsi “muat cepat”, opsi ini memberi Anda lebih banyak kontrol untuk mengelola perilaku tabel tujuan selama operasi push data, seperti Keep identity, Keep nulls, Table lock, dan Check constraint.


Editor Tujuan OLE DB

Sangat disarankan agar Anda menggunakan opsi pemuatan cepat untuk memasukkan data ke tabel tujuan guna meningkatkan kinerja ETL.

#8, Konfigurasikan Baris per Batch dan Ukuran Komit Sisipkan Maksimum di tujuan OLEDB. Kedua pengaturan ini penting untuk mengontrol kinerja tempdb dan log transaksi karena dengan nilai default yang diberikan dari properti ini akan mendorong data ke tabel tujuan di bawah satu batch dan satu transaksi. Ini akan membutuhkan penggunaan tembdb dan log transaksi yang berlebihan, yang berubah menjadi masalah kinerja ETL karena konsumsi memori dan penyimpanan disk yang berlebihan.


Editor Tujuan OLE DB

Untuk meningkatkan kinerja ETL, Anda dapat menempatkan nilai bilangan bulat positif di kedua properti berdasarkan volume data yang diantisipasi, yang akan membantu membagi sejumlah besar data menjadi beberapa kumpulan, dan data dalam kumpulan dapat kembali dikomit ke dalam tabel tujuan tergantung pada nilai yang ditentukan. Ini akan menghindari penggunaan tempdb dan log transaksi yang berlebihan, yang akan membantu meningkatkan kinerja ETL.

#9 Penggunaan SQL Server Destination dalam tugas aliran data. Saat Anda ingin memasukkan data ke database SQL Server lokal, sangat disarankan untuk menggunakan SQL Server Destination, karena menyediakan banyak manfaat untuk mengatasi keterbatasan opsi lain, yang membantu Anda meningkatkan kinerja ETL. Misalnya, ini menggunakan fitur penyisipan massal yang dibangun ke dalam SQL Server tetapi memberi Anda opsi untuk menerapkan transformasi sebelum memuat data ke tabel tujuan. Selain itu, ini memberi Anda opsi untuk mengaktifkan/menonaktifkan pemicu yang akan diaktifkan saat memuat data, yang juga membantu mengurangi overhead ETL.


Komponen Aliran Data Tujuan SQL Server

#10 Hindari typecast implisit. Ketika data berasal dari file datar, manajer koneksi file datar memperlakukan semua kolom sebagai tipe data string (DS_STR), termasuk kolom numerik. Seperti yang Anda ketahui, SSIS menggunakan memori buffer untuk menyimpan seluruh rangkaian data dan menerapkan transformasi yang diperlukan sebelum memasukkan data ke tabel tujuan. Sekarang, ketika semua kolom adalah tipe data string, itu akan membutuhkan lebih banyak ruang di buffer, yang akan mengurangi kinerja ETL.

Untuk meningkatkan kinerja ETL, Anda harus mengonversi semua kolom numerik menjadi tipe data yang sesuai dan menghindari konversi implisit, yang akan membantu mesin SSIS mengakomodasi lebih banyak baris dalam satu buffer.

Ringkasan Peningkatan Kinerja ETL

Dalam artikel ini kami mengeksplorasi betapa mudahnya kinerja ETL dapat dikontrol kapan saja. Ini adalah 10 cara umum untuk meningkatkan kinerja ETL. Mungkin ada lebih banyak metode berdasarkan skenario yang berbeda untuk meningkatkan kinerja.

Secara keseluruhan, dengan bantuan kategorisasi Anda dapat mengidentifikasi bagaimana menangani situasi tersebut. Jika Anda berada dalam fase desain gudang data, maka Anda mungkin perlu berkonsentrasi pada kedua kategori tersebut, tetapi jika Anda mendukung sistem lama apa pun, pertama-tama kerjakan kategori kedua dengan cermat.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan Ekspresi untuk Memfilter Data Database

  2. Migrasi Database ke Azure SQL Database

  3. Seberapa mahalkah Konversi Implisit sisi kolom?

  4. Cara Mencapai Failover Otomatis untuk TimescaleDB

  5. Cara Menghilangkan Baris Duplikat di SQL