download sample code
Waktu lagi nyari-nyari cara buat mempercepat SSIS saya menemukan sebuah artikel menarik tentang bagaimana cara melakukan tuning kinerja SSIS. Sebelum melakukan tuning tentu harus tahu dulu bagian ETL yang harus di-tune, dan untuk mengetahuinya ternyata caranya cukup mudah.
Pertama, kita hitung dulu total waktu eksekusi package yang akan di-tune. Dalam contoh berikut saya telah membuat sebuah ETL sederhana yang men-generate satu juta data, melakukan transformasi lookup dari sebuah cache lalu me-load hasilnya ke dalam sebuah file teks. Supaya fleksibel, jumlah data yang di-generate dapat diatur lewat variable NumberOfRows. Package pertama ini saya beri nama Package-Full.dtsx
Setelah dilakukan tes dengan penuh ketelitian, ternyata waktu eksekusi yang dibutuhkan 00:01:09.049
Berikutnya menghitung waktu yang dibutuhkan untuk me-load data ke dalam teks file. Sebelum melakukannya saya copy dulu package Package-Full.dtsx dan hasil copy-nya diberi nama Package-Destination.dtsx. Selanjutnya bekerja dengan Package-Destination.dtsx, hapus Flat File Destination dan ganti dengan Row Count lalu eksekusi package Package-Destination.dtsx. Waktu yang ditempuh untuk me-load data ke dalam text file adalah waktu eksekusi Package-Full.dtsx dikurangi waktu eksekusi Package-Destination.dtsx
Hasil eksekusi package kali ini adalah 00:00:19.458. Itu berarti waktu load adalah 00:01:09.049 - 00:00:19.458 = 00:00:49.591
Terakhir adalah menghitung waktu extract data sekaligus menghitung waktu transformasi. Seperti pada langkah sebelumnya, copy dulu Package-Destination.dtsx dan ubah nama copy-nya dengan Package-Source.dtsx. Setelah selesai, hapus Lookup, Derived Column, dan Union All pada Package-Source.dtsx. Kemudian hubungkan Script Component dan Row Count lalu eksekusi package Package-Source.dtsx.
Setelah dieksekusi ternyata waktu Extract adalah 00:00:10.746. Ini berarti waktu transformasi adalah waktu eksekusi Package-Destination.dtsx dikurangi waktu eksekusi Package-Source.dtsx, 00:00:19.458 - 00:00:10.746 = 00:00:08.712.
Berikut adalah hasil pengukuran kinerja ETL diatas:
| Step | Waktu |
| Extract | 00:00:10.746 |
| Transform | 00:00:08.712 |
| Load | 00:00:49.591 |
| Total | 00:01:09.049 |
Wah wah, ternyata proses paling lama terjadi pada saat data di-Load ke dalam text file. Mungkin sudah waktunya saya ganti harddisk yah?
Artikel untuk melakukan tuning kinerja SSIS selengkapnya dapat dilihat disini.