Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini membahas tips untuk mencapai performa throughput tulis yang lebih baik saat Anda memuat data ke Azure SQL Database menggunakan Azure Stream Analytics.
Output SQL di Azure Stream Analytics mendukung penulisan secara paralel sebagai opsi. Opsi ini memungkinkan topologi pekerjaan yang sepenuhnya paralel , di mana beberapa partisi output menulis ke tabel tujuan secara paralel. Namun, mengaktifkan opsi ini di Azure Stream Analytics mungkin tidak cukup untuk mencapai throughput yang lebih tinggi, karena bergantung secara signifikan pada konfigurasi database dan skema tabel Anda. Pilihan indeks, kunci pengklusteran, faktor pengisian indeks, dan kompresi berdampak pada waktu untuk memuat tabel. Untuk informasi selengkapnya tentang cara mengoptimalkan database Anda untuk meningkatkan performa kueri dan beban berdasarkan tolok ukur internal, lihat panduan performa SQL Database. Urutan penulisan tidak dijamin saat menulis secara paralel dengan SQL Database.
Berikut adalah beberapa konfigurasi dalam setiap layanan yang dapat membantu meningkatkan throughput keseluruhan solusi Anda.
Azure Stream Analytics
Pewarisan Partisi – Opsi konfigurasi output SQL ini memungkinkan pewarisan skema partisi dari langkah kueri atau input sebelumnya. Ketika ini diaktifkan, menulis ke tabel berbasis disk serta memiliki topologi paralel sepenuhnya untuk pekerjaan Anda, Anda dapat mengharapkan untuk melihat throughput yang lebih baik. Pemartisian ini sudah secara otomatis terjadi untuk banyak output lainnya. Penguncian tabel (TABLOCK) juga dinonaktifkan untuk penyisipan massal yang dilakukan dengan opsi ini.
Nota
Ketika ada lebih dari 8 partisi input, mewarisi skema partisi input mungkin bukan pilihan yang tepat. Batas atas ini diamati pada tabel dengan satu kolom identitas dan indeks berkluster. Dalam hal ini, pertimbangkan untuk menggunakan INTO 8 dalam kueri Anda, untuk secara eksplisit menentukan jumlah penulis output. Berdasarkan skema dan pilihan indeks Anda, pengamatan Anda dapat bervariasi.
Ukuran Batch - Konfigurasi output SQL memungkinkan Anda menentukan ukuran batch maksimum dalam output Azure Stream Analytics SQL berdasarkan sifat tabel/beban kerja tujuan Anda. Ukuran batch adalah jumlah maksimum rekaman yang dikirim dengan setiap transaksi sisipan massal. Dalam indeks penyimpan kolom berkluster, ukuran batch sekitar 100K memungkinkan lebih banyak paralelisasi, pengelogan minimal, dan pengoptimalan penguncian. Dalam tabel berbasis disk, ukuran batch 10K (default) atau lebih rendah mungkin optimal untuk solusi Anda, karena ukuran batch yang lebih tinggi dapat menyebabkan eskalasi kunci selama penyisipan massal.
Penyetelan Pesan Input – Jika Anda telah mengoptimalkan penggunaan partisi warisan dan ukuran batch, meningkatkan jumlah peristiwa input per pesan per partisi membantu mendorong throughput tulis Anda lebih lanjut. Penyetelan pesan input memungkinkan ukuran batch di Azure Stream Analytics mencapai ukuran batch yang ditentukan, sehingga meningkatkan throughput. Ini dapat dicapai dengan menggunakan kompresi atau meningkatkan ukuran pesan input di EventHub atau Blob.
SQL Azure
Tabel dan Indeks Yang Dipartisi – Menggunakan tabel SQL yang dipartisi dan indeks yang dipartisi pada tabel dengan kolom yang sama dengan kunci partisi Anda (misalnya, PartitionId) dapat secara signifikan mengurangi pertikaian di antara partisi selama penulisan. Untuk tabel yang dipartisi, Anda harus membuat fungsi partisi dan skema partisi pada grup file PRIMER. Ini juga akan meningkatkan ketersediaan data yang ada saat data baru sedang dimuat. Batas IO log dapat tercapai berdasarkan jumlah partisi, yang dapat ditingkatkan dengan meningkatkan SKU.
Hindari pelanggaran kunci unik – Jika Anda mendapatkan beberapa pesan peringatan pelanggaran utama di Log Aktivitas Azure Stream Analytics, pastikan pekerjaan Anda tidak terpengaruh oleh pelanggaran batasan unik yang kemungkinan akan terjadi selama kasus pemulihan. Ini dapat dihindari dengan mengatur opsi IGNORE_DUP_KEY pada indeks Anda.
Azure Data Factory dan Tabel In-Memory
- tabelIn-Memory sebagai tabel sementara – tabelIn-Memory memungkinkan pemuatan data berkecepatan sangat tinggi tetapi data perlu pas dalam memori. Tolok ukur menunjukkan pemuatan massal dari tabel dalam memori ke tabel berbasis disk sekitar 10 kali lebih cepat daripada menyisipkan secara massal menggunakan penulis tunggal ke dalam tabel berbasis disk dengan kolom identitas dan indeks berkluster. Untuk memanfaatkan performa penyisipan massal ini, siapkan pekerjaan penyalinan menggunakan Azure Data Factory yang menyalin data dari tabel dalam memori ke tabel berbasis disk.
Menghindari Jebakan Kinerja
Menyisipkan data secara massal jauh lebih cepat daripada memuat data dengan sisipan tunggal karena overhead berulang mentransfer data, mengurai dan menjalankan pernyataan penyisipan serta mengeluarkan rekaman transaksi dihindari. Sebagai gantinya, jalur yang lebih efisien digunakan ke dalam mesin penyimpanan untuk mengalirkan data. Biaya penyusunan jalur ini jauh lebih tinggi daripada satu pernyataan sisipan dalam tabel berbasis disk. Titik impas biasanya sekitar 100 baris, setelah itu, pemuatan massal hampir selalu lebih efisien.
Jika tingkat peristiwa masuk rendah, dapat dengan mudah membuat ukuran batch lebih rendah dari 100 baris, yang membuat penyisipan massal tidak efisien dan menggunakan terlalu banyak ruang disk. Untuk mengatasi batasan ini, Anda dapat melakukan salah satu tindakan berikut:
- Buat trigger INSTEAD OF untuk menggunakan penyisipan data sederhana pada tiap baris.
- Gunakan tabel sementara In-Memory seperti yang dijelaskan di bagian sebelumnya.
Skenario lain seperti itu terjadi ketika menulis ke dalam indeks penyimpan kolom non-kluster (NCCI), di mana penyisipan massal dalam jumlah kecil dapat menciptakan terlalu banyak segmen, yang dapat menghancurkan indeks. Dalam hal ini, rekomendasinya adalah menggunakan indeks Penyimpan Kolom Berkluster sebagai gantinya.
RINGKASAN
Singkatnya, dengan fitur output yang dipartisi di Azure Stream Analytics untuk output SQL, paralelisasi pekerjaan Anda yang selaras dengan tabel yang dipartisi di SQL Azure akan memberi Anda peningkatan throughput yang signifikan. Menggunakan Azure Data Factory untuk mengorkestrasi perpindahan data dari tabel In-Memory ke tabel berbasis Disk dapat memberikan peningkatan throughput yang signifikan. Jika memungkinkan, meningkatkan kepadatan pesan juga dapat menjadi faktor utama dalam meningkatkan throughput secara keseluruhan.
Langkah berikutnya
- Pahami output dari Azure Stream Analytics
- Output dari Azure Stream Analytics ke dalam Azure SQL Database
- Menggunakan identitas terkelola untuk mengakses Azure SQL Database atau Azure Synapse Analytics dari pekerjaan Azure Stream Analytics
- Menggunakan data referensi dari SQL Database untuk pekerjaan Azure Stream Analytics
- Memperbarui atau menggabungkan rekaman di Azure SQL Database dengan Azure Functions
- Quickstart: Membuat tugas Stream Analytics dengan menggunakan portal Azure