Fitur Performa Aliran Data

Berlaku untuk:SQL Server SSIS Integration Runtime di Azure Data Factory

Topik ini memberikan saran tentang cara merancang paket Layanan Integrasi untuk menghindari masalah performa umum. Topik ini juga menyediakan informasi tentang fitur dan alat yang dapat Anda gunakan untuk memecahkan masalah performa paket.

Mengonfigurasi Aliran Data

Untuk mengonfigurasi tugas Aliran Data untuk performa yang lebih baik, Anda dapat mengonfigurasi properti tugas, menyesuaikan ukuran buffer, dan mengonfigurasi paket untuk eksekusi paralel.

Mengonfigurasi Properti Tugas Aliran Data

Catatan

Properti yang dibahas di bagian ini harus diatur secara terpisah untuk setiap tugas Aliran Data dalam paket.

Anda dapat mengonfigurasi properti tugas Aliran Data berikut, yang semuanya memengaruhi performa:

  • Tentukan lokasi untuk penyimpanan sementara data buffer (properti BufferTempStoragePath) dan kolom yang berisi data objek besar biner (BLOB) (properti BLOBTempStoragePath). Secara default, properti ini berisi nilai variabel lingkungan TEMP dan TMP. Anda mungkin ingin menentukan folder lain untuk menempatkan file sementara pada hard disk drive yang berbeda atau lebih cepat, atau menyebarkannya di beberapa drive. Anda dapat menentukan beberapa direktori dengan memisahkan nama direktori dengan titik koma.

  • Tentukan ukuran default buffer yang digunakan tugas, dengan mengatur properti DefaultBufferSize, dan tentukan jumlah baris maksimum di setiap buffer, dengan mengatur properti DefaultBufferMaxRows. Atur properti AutoAdjustBufferSize untuk menunjukkan apakah ukuran default buffer dihitung secara otomatis dari nilai properti DefaultBufferMaxRows. Ukuran buffer default adalah 10 megabyte, dengan ukuran buffer maksimum 2^31-1 byte. Jumlah maksimum default baris adalah 10.000.

  • Atur jumlah utas yang dapat digunakan tugas selama eksekusi, dengan mengatur properti EngineThreads. Properti ini memberikan saran kepada mesin aliran data tentang jumlah utas yang akan digunakan. Defaultnya adalah 10, dengan nilai minimum 3. Namun, mesin tidak akan menggunakan lebih banyak utas daripada yang dibutuhkan, terlepas dari nilai properti ini. Mesin juga dapat menggunakan lebih banyak utas daripada yang ditentukan dalam properti ini, jika perlu untuk menghindari masalah konkurensi.

  • Menunjukkan apakah tugas Aliran Data berjalan dalam mode yang dioptimalkan (properti RunInOptimizedMode). Mode yang dioptimalkan meningkatkan performa dengan menghapus kolom, output, dan komponen yang tidak digunakan dari aliran data.

    Catatan

    Properti dengan nama yang sama, RunInOptimizedMode, dapat diatur pada tingkat proyek di SQL Server Data Tools (SSDT) untuk menunjukkan bahwa tugas Aliran Data berjalan dalam mode yang dioptimalkan selama penelusuran kesalahan. Properti proyek ini mengambil alih properti RunInOptimizedMode dari tugas Aliran Data pada waktu desain.

Menyesuaikan Ukuran Buffer

Mesin aliran data memulai tugas untuk mengukur buffernya dengan menghitung perkiraan ukuran satu baris data. Kemudian mengalikan perkiraan ukuran baris dengan nilai DefaultBufferMaxRows untuk mendapatkan nilai kerja awal untuk ukuran buffer.

  • Jika AutoAdjustBufferSize diatur ke true, mesin aliran data mesin menggunakan nilai terhitung sebagai ukuran buffer, dan nilai DefaultBufferSize diabaikan.

  • Jika AutoAdjustBufferSize diatur ke false, mesin aliran data mesin menggunakan aturan berikut untuk menentukan ukuran buffer.

    • Jika hasilnya lebih dari nilai DefaultBufferSize, mesin mengurangi jumlah baris.

    • Jika hasilnya kurang dari ukuran buffer minimum yang dihitung secara internal, mesin akan meningkatkan jumlah baris.

    • Jika hasilnya berada di antara ukuran buffer minimum dan nilai DefaultBufferSize, mesin mengukur buffer sedekat mungkin dengan perkiraan ukuran baris kali nilai DefaultBufferMaxRows.

Saat Anda mulai menguji performa tugas aliran data Anda, gunakan nilai default untuk DefaultBufferSize dan DefaultBufferMaxRows. Aktifkan pengelogan pada tugas aliran data, dan pilih peristiwa BufferSizeTuning untuk melihat berapa banyak baris yang terkandung di setiap buffer.

Sebelum Anda mulai menyesuaikan ukuran buffer, peningkatan terpenting yang dapat Anda lakukan adalah mengurangi ukuran setiap baris data dengan menghapus kolom yang tidak diperlukan dan dengan mengonfigurasi jenis data dengan tepat.

Untuk menentukan jumlah buffer yang optimal dan ukurannya, bereksperimenlah dengan nilai DefaultBufferSize dan DefaultBufferMaxRows saat memantau performa dan informasi yang dilaporkan oleh peristiwa BufferSizeTuning.

Jangan menambah ukuran buffer ke titik di mana halaman ke disk mulai terjadi. Halaman ke disk menghambat performa lebih dari ukuran buffer yang belum dioptimalkan. Untuk menentukan apakah penomoran terjadi, pantau penghitung kinerja "Buffer tertampung" di snap-in Performa Konsol Manajemen Microsoft (MMC).

Mengonfigurasi Paket untuk Eksekusi Paralel

Eksekusi paralel meningkatkan performa pada komputer yang memiliki beberapa prosesor fisik atau logis. Untuk mendukung eksekusi paralel tugas yang berbeda dalam paket, Integration Services menggunakan dua properti: MaxConcurrentExecutables dan EngineThreads.

Properti MaxConcurrentExcecutables

Properti MaxConcurrentExecutables adalah properti dari paket itu sendiri. Properti ini menentukan berapa banyak tugas yang dapat dijalankan secara bersamaan. Nilai defaultnya adalah -1, yang berarti jumlah prosesor fisik atau logis ditambah 2.

Untuk memahami cara kerja properti ini, pertimbangkan paket sampel yang memiliki tiga tugas Aliran Data. Jika Anda mengatur MaxConcurrentExecutables ke 3, ketiga tugas Aliran Data dapat berjalan secara bersamaan. Namun, asumsikan bahwa setiap tugas Aliran Data memiliki 10 pohon eksekusi sumber-ke-tujuan. Mengatur MaxConcurrentExecutables ke 3 tidak memastikan bahwa pohon eksekusi di dalam setiap tugas Aliran Data berjalan secara paralel.

Properti EngineThreads

Properti EngineThreads adalah properti dari setiap tugas Aliran Data. Properti ini menentukan berapa banyak utas yang dapat dibuat dan dijalankan oleh mesin aliran data secara paralel. Properti EngineThreads berlaku sama untuk utas sumber yang dibuat mesin aliran data untuk sumber dan utas pekerja yang dibuat mesin untuk transformasi dan tujuan. Oleh karena itu, mengatur EngineThreads menjadi 10 berarti bahwa mesin dapat membuat hingga sepuluh utas sumber dan hingga sepuluh utas pekerja.

Untuk memahami cara kerja properti ini, pertimbangkan paket sampel dengan tiga tugas Aliran Data. Setiap tugas Aliran Data berisi sepuluh pohon eksekusi sumber-ke-tujuan. Jika Anda mengatur EngineThreads ke 10 pada setiap tugas Aliran Data, semua 30 pohon eksekusi berpotensi berjalan secara bersamaan.

Catatan

Diskusi utas berada di luar cakupan topik ini. Namun, aturan umum tidak menjalankan lebih banyak utas secara paralel daripada jumlah prosesor yang tersedia. Menjalankan lebih banyak utas daripada jumlah prosesor yang tersedia dapat menghambat performa karena sering beralih konteks antar utas.

Mengonfigurasi Komponen Aliran Data Individual

Untuk mengonfigurasi komponen aliran data individual untuk performa yang lebih baik, ada beberapa panduan umum yang dapat Anda ikuti. Ada juga panduan khusus untuk setiap jenis komponen aliran data: sumber, transformasi, dan tujuan.

Panduan Umum

Terlepas dari komponen aliran data, ada dua panduan umum yang harus Anda ikuti untuk meningkatkan performa: mengoptimalkan kueri dan menghindari string yang tidak perlu.

Mengoptimalkan Kueri

Sejumlah komponen aliran data menggunakan kueri, baik saat mereka mengekstrak data dari sumber, atau dalam operasi pencarian untuk membuat tabel referensi. Kueri default menggunakan sintaks SELECT * FROM <tableName> . Jenis kueri ini mengembalikan semua kolom dalam tabel sumber. Memiliki semua kolom yang tersedia pada waktu desain memungkinkan untuk memilih kolom apa pun sebagai kolom pencarian, pass-through, atau sumber. Namun, setelah Anda memilih kolom yang akan digunakan, Anda harus merevisi kueri untuk menyertakan kolom yang dipilih saja. Menghapus kolom yang berlebihan membuat aliran data dalam paket lebih efisien karena lebih sedikit kolom yang membuat baris yang lebih kecil. Baris yang lebih kecil berarti bahwa lebih banyak baris dapat masuk ke dalam satu buffer, dan semakin sedikit pekerjaan untuk memproses semua baris dalam himpunan data.

Untuk membuat kueri, Anda bisa mengetik kueri atau menggunakan Pembangun Kueri.

Catatan

Saat Anda menjalankan paket di SQL Server Data Tools (SSDT), tab Kemajuan dari SSIS Designer mencantumkan peringatan. Peringatan ini termasuk mengidentifikasi kolom data apa pun yang disediakan sumber untuk aliran data, tetapi kemudian tidak digunakan oleh komponen aliran data hilir. Anda dapat menggunakan properti RunInOptimizedMode untuk menghapus kolom ini secara otomatis.

Hindari Pengurutan yang Tidak Perlu

Pengurutan secara inheren merupakan operasi yang lambat, dan menghindari pengurutan yang tidak perlu dapat meningkatkan performa aliran data paket.

Terkadang data sumber telah diurutkan sebelum digunakan oleh komponen hilir. Pra-pengurutan tersebut dapat terjadi saat kueri SELECT menggunakan klausa ORDER BY atau ketika data dimasukkan ke sumber dalam urutan yang diurutkan. Untuk data sumber yang telah diurutkan sebelumnya, Anda dapat memberikan petunjuk bahwa data diurutkan, dan dengan demikian menghindari penggunaan transformasi Sortir untuk memenuhi persyaratan pengurutan transformasi hilir tertentu. (Misalnya, transformasi Gabungkan dan Gabungkan Gabungan memerlukan input yang diurutkan.) Untuk memberikan petunjuk bahwa data diurutkan, Anda harus melakukan tugas berikut:

  • Atur properti IsSorted pada output komponen aliran data upstram ke True.

  • Tentukan kolom kunci pengurutan tempat data diurutkan.

Untuk informasi selengkapnya, lihat Mengurutkan Data untuk Transformasi Gabungkan dan Gabungkan Gabungan.

Jika Anda harus mengurutkan data dalam aliran data, Anda dapat meningkatkan performa dengan merancang aliran data untuk menggunakan operasi pengurutan sesetempat mungkin. Misalnya, aliran data menggunakan transformasi Multicast untuk menyalin himpunan data. Urutkan himpunan data sekali sebelum transformasi Multicast berjalan, alih-alih mengurutkan beberapa output setelah transformasi.

Untuk informasi selengkapnya, lihat Mengurutkan Transformasi, Menggabungkan Transformasi, Menggabungkan Transformasi Gabungan, dan Transformasi Multicast.

Sumber

Sumber OLE DB

Saat Anda menggunakan sumber OLE DB untuk mengambil data dari tampilan, pilih "perintah SQL" sebagai mode akses data dan masukkan pernyataan SELECT. Mengakses data dengan menggunakan pernyataan SELECT berkinerja lebih baik daripada memilih "Tabel atau tampilan" sebagai mode akses data.

Transformasi

Gunakan saran di bagian ini untuk meningkatkan performa transformasi Agregat, Pencarian Fuzzy, Pengelompokan Fuzzy, Pencarian, Gabungkan, dan Transformasi Dimensi yang Berubah Secara Perlahan.

Transformasi Agregat

Transformasi Agregat mencakup properti Keys, KeysScale, CountDistinctKeys, dan CountDistinctScale . Properti ini meningkatkan performa dengan mengaktifkan transformasi untuk melakukan pra-alokasi jumlah memori yang dibutuhkan transformasi untuk data yang di-cache transformasi. Jika Anda mengetahui jumlah grup yang tepat atau perkiraan yang diharapkan dihasilkan dari operasi Kelompokkan menurut , atur properti Keys dan KeysScale . Jika Anda mengetahui jumlah nilai berbeda yang tepat atau perkiraan yang diharapkan dihasilkan dari operasi hitungan Berbeda, atur properti CountDistinctKeys dan CountDistinctScale .

Jika Anda harus membuat beberapa agregasi dalam aliran data, pertimbangkan untuk membuat beberapa agregasi yang menggunakan satu transformasi Agregat alih-alih membuat beberapa transformasi. Pendekatan ini meningkatkan performa ketika satu agregasi adalah subset agregasi lain karena transformasi dapat mengoptimalkan penyimpanan internal dan memindai data masuk hanya sekali. Misalnya, jika agregasi menggunakan klausul GROUP BY dan agregasi AVG, menggabungkannya menjadi satu transformasi dapat meningkatkan performa. Namun, melakukan beberapa agregasi dalam satu transformasi Agregat menserialisasikan operasi agregasi, dan oleh karena itu mungkin tidak meningkatkan performa ketika beberapa agregasi harus dihitung secara independen.

Pencarian Fuzzy dan Transformasi Pengelompokan Fuzzy

Untuk informasi tentang mengoptimalkan performa transformasi Fuzzy Lookup dan Fuzzy Grouping, lihat laporan resmi, Fuzzy Lookup dan Fuzzy Grouping di SQL Server Integration Services 2005.

Transformasi Pencarian

Minimalkan ukuran data referensi dalam memori dengan memasukkan pernyataan SELECT yang hanya mencari kolom yang Anda butuhkan. Opsi ini berkinerja lebih baik daripada memilih seluruh tabel atau tampilan, yang mengembalikan sejumlah besar data yang tidak perlu.

Penggabungan Transformasi Gabungan

Anda tidak lagi harus mengonfigurasi nilai properti MaxBuffersPerInput karena Microsoft telah membuat perubahan yang mengurangi risiko transformasi Gabung akan mengonsumsi memori yang berlebihan. Masalah ini terkadang terjadi ketika beberapa input gabungan menghasilkan data pada tingkat yang tidak merata.

Transformasi Dimensi Adaptif Perlahan

Wizard Dimensi yang Berubah Perlahan dan transformasi Dimensi yang Berubah Perlahan adalah alat tujuan umum yang memenuhi kebutuhan sebagian besar pengguna. Namun, aliran data yang dihasilkan wizard tidak dioptimalkan untuk performa.

Biasanya, komponen terlambat dalam transformasi Dimensi Yang Berubah Perlahan adalah transformasi Perintah OLE DB yang melakukan UPDATEs terhadap satu baris pada satu waktu. Oleh karena itu, cara paling efektif untuk meningkatkan performa transformasi Dimensi yang Berubah Secara Perlahan adalah dengan mengganti transformasi Perintah OLE DB. Anda dapat mengganti transformasi ini dengan komponen tujuan yang menyimpan semua baris untuk diperbarui ke tabel penahapan. Kemudian, Anda dapat menambahkan tugas Jalankan SQL yang melakukan satu PEMBARUAN Transact-SQL berbasis set terhadap semua baris secara bersamaan.

Pengguna tingkat lanjut dapat merancang aliran data kustom untuk pemrosesan dimensi yang berubah secara perlahan yang dioptimalkan untuk dimensi besar. Untuk diskusi dan contoh pendekatan ini, lihat bagian , "Skenario dimensi unik," di laporan resmi, Project REAL: Praktik Desain ETL Kecerdasan Bisnis.

Tujuan

Untuk mencapai performa yang lebih baik dengan tujuan, pertimbangkan untuk menggunakan tujuan SQL Server dan menguji performa tujuan.

Tujuan SQL Server

Saat paket memuat data ke instans SQL Server di komputer yang sama, gunakan tujuan SQL Server. Tujuan ini dioptimalkan untuk beban massal berkecepatan tinggi.

Menguji Performa Tujuan

Anda mungkin menemukan bahwa menyimpan data ke tujuan membutuhkan lebih banyak waktu dari yang diharapkan. Untuk mengidentifikasi apakah kelambatan disebabkan oleh ketidakmampuan tujuan untuk memproses data dengan cukup cepat, Anda dapat mengganti tujuan untuk sementara dengan transformasi Jumlah Baris. Jika throughput meningkat secara signifikan, kemungkinan tujuan yang memuat data menyebabkan perlambatan.

Tinjau Informasi pada Tab Kemajuan

SSIS Designer menyediakan informasi tentang aliran kontrol dan aliran data saat Anda menjalankan paket di SQL Server Data Tools (SSDT). Tab Kemajuan mencantumkan tugas dan kontainer dalam urutan eksekusi dan mencakup waktu mulai dan selesai, peringatan, dan pesan kesalahan untuk setiap tugas dan kontainer, termasuk paket itu sendiri. Ini juga mencantumkan komponen aliran data dalam urutan eksekusi dan mencakup informasi tentang kemajuan, ditampilkan sebagai persentase selesai, dan jumlah baris yang diproses.

Untuk mengaktifkan atau menonaktifkan tampilan pesan pada tab Kemajuan , alihkan opsi Pelaporan Kemajuan Debug pada menu SSIS . Menonaktifkan pelaporan kemajuan dapat membantu meningkatkan performa saat menjalankan paket kompleks di SQL Server Data Tools.

Artikel dan Posting blog

Video

Lihat Juga

Alat Pemecahan Masalah untuk Pengembangan Paket
Alat Pemecahan Masalah untuk Eksekusi Paket