Menggunakan prosedur tersimpan untuk kumpulan SQL khusus di Azure Synapse Analytics
Artikel ini menyediakan tips untuk mengembangkan solusi kumpulan SQL khusus dengan menerapkan prosedur tersimpan.
Hal yang diharapkan
Kumpulan SQL khusus mendukung banyak fitur T-SQL yang digunakan di SQL Server. Lebih penting lagi, ada fitur khusus yang dapat Anda gunakan untuk memaksimalkan performa solusi Anda.
Selain itu, untuk membantu Anda mempertahankan skala dan performa kumpulan SQL khusus, ada fitur dan fungsi tambahan yang memiliki perbedaan perilaku.
Memperkenalkan prosedur tersimpan
Prosedur tersimpan adalah cara yang bagus untuk merangkum kode SQL Anda, yang disimpan dekat dengan data kumpulan SQL khusus Anda. Prosedur tersimpan juga membantu pengembang memodulasi solusi mereka dengan merangkum kode ke dalam unit yang dapat dikelola, sehingga memfasilitasi penggunaan kode kembali yang lebih besar. Setiap prosedur tersimpan juga dapat menerima parameter untuk membuatnya lebih fleksibel.
Kumpulan SQL khusus menyediakan implementasi prosedur yang disederhanakan dan tersimpan. Perbedaan terbesar dibandingkan dengan SQL Server adalah bahwa prosedur tersimpan bukan kode yang telah dikompilasi.
Secara umum, untuk gudang data, waktu kompilasi kecil dibandingkan dengan waktu yang diperlukan untuk menjalankan kueri terhadap volume data besar. Lebih penting untuk memastikan kode prosedur tersimpan dioptimasi dengan benar untuk kueri besar.
Tip
Tujuannya adalah menghemat jam, menit, dan detik, bukan milidetik. Jadi, sangat membantu untuk memikirkan prosedur tersimpan sebagai kontainer untuk logika SQL.
Ketika kumpulan SQL khusus menjalankan prosedur tersimpan, pernyataan SQL diurai, diterjemahkan, dan dioptimasi pada waktu proses. Selama proses ini, setiap pernyataan dikonversi menjadi kueri terdistribusi. Kode SQL yang dijalankan terhadap data berbeda dengan kueri yang dikirimkan.
Prosedur tersimpan bersarang
Ketika prosedur tersimpan memanggil prosedur tersimpan lain, atau menjalankan SQL dinamis, maka prosedur atau pemanggilan kode tersimpan bagian dalam dikatakan bersarang.
Kumpulan SQL khusus mendukung maksimal delapan tingkat bersarang. Sebaliknya, tingkat sarang di SQL Server adalah 32.
Panggilan prosedur tingkat atas yang disimpan sama dengan sarang tingkat 1.
EXEC prc_nesting
Jika prosedur tersimpan juga membuat panggilan EXEC lain, tingkat lapisan meningkat menjadi dua.
CREATE PROCEDURE prc_nesting
AS
EXEC prc_nesting_2 -- This call is nest level 2
GO
EXEC prc_nesting
Jika prosedur kedua kemudian menjalankan beberapa SQL dinamis, tingkat lapisan meningkat menjadi tiga.
CREATE PROCEDURE prc_nesting_2
AS
EXEC sp_executesql 'SELECT 'another nest level' -- This call is nest level 2
GO
EXEC prc_nesting
Kumpulan SQL khusus saat ini tidak mendukung @@NESTLEVEL. Dengan demikian, Anda perlu melacak tingkat sarang. Tidak mungkin Anda akan melebihi batas delapan tingkat sarang. Namun, jika Anda melakukannya, Anda perlu mengerjakan ulang kode agar sesuai dengan tingkat bersarang dalam batas ini.
INSERT..EXECUTE
Kumpulan SQL khusus tidak mengizinkan Anda untuk memakai tataan hasil prosedur tersimpan dengan pernyataan INSERT. Namun, ada pendekatan alternatif yang dapat Anda gunakan. Contohnya, lihat artikel tentang tabel sementara.
Batasan
Ada beberapa aspek prosedur tersimpan Transact-SQL yang tidak diterapkan di kumpulan SQL khusus, yaitu sebagai berikut:
- prosedur tersimpan sementara
- prosedur tersimpan bernomor
- prosedur tersimpan diperpanjang
- prosedur tersimpan CLR
- opsi enkripsi
- opsi replikasi
- parameter bernilai tabel
- parameter baca-saja
- parameter default
- konteks eksekusi
- pernyataan pengembalian
Langkah berikutnya
Untuk tips pengembangan selengkapnya, buka gambaran pengembangan.