Penasihat Distribusi di SQL Azure Synapse

Berlaku untuk: kumpulan SQL khusus Azure Synapse Analytics (sebelumnya SQL DW)

Di SQL Azure Synapse, setiap tabel didistribusikan menggunakan strategi yang dipilih oleh pelanggan (Round Robin, Hash Terdistribusi, Direplikasi). Strategi distribusi yang dipilih dapat mempengaruhi performa kueri secara substansial.

Fitur Penasihat Distribusi (DA) dari SQL Azure Synapse menganalisis kueri pelanggan dan merekomendasikan strategi distribusi terbaik untuk tabel guna meningkatkan performa kueri. Pertanyaan yang akan dipertimbangkan oleh penasihat dapat diberikan oleh pelanggan atau diambil dari pertanyaan historis yang tersedia di DMV.

Catatan

Penasihat Distribusi saat ini dalam pratinjau untuk Azure Synapse Analytics. Fitur pratinjau dimaksudkan hanya untuk pengujian dan tidak boleh digunakan pada instans produksi atau data produksi. Sebagai fitur pratinjau, Penasihat Distribusi dapat mengalami perubahan perilaku atau fungsionalitas. Harap simpan juga salinan data pengujian Anda jika data tersebut penting. Distribution Advisor tidak mendukung tabel terdistribusi Multi-Kolom.

Prasyarat

  • Jalankan pernyataan T-SQL SELECT @@version untuk memastikan bahwa kumpulan SQL khusus Azure Synapse Analytics Anda adalah versi 10.0.15669 atau yang lebih tinggi. Jika versi Anda lebih rendah, versi baru akan secara otomatis mencapai kumpulan SQL khusus yang Anda sediakan selama siklus pemeliharaannya.

  • Pastikan bahwa statistik tersedia dan terkini sebelum menjalankan penasihat. Untuk detail selengkapnya, artikel Kelola statistik tabel, BUAT STATISTIK, dan PERBARUI untuk detail selengkapnya tentang statistik.

  • Aktifkan penasihat distribusi Azure Synapse untuk sesi saat ini dengan perintah SET RECOMMENDATIONS T-SQL.

Menganalisis beban kerja dan menghasilkan rekomendasi distribusi

Tutorial berikut menjelaskan contoh kasus penggunaan fitur Penasihat Distribusi untuk menganalisis kueri pelanggan dan merekomendasikan strategi distribusi terbaik.

Penasihat Distribusi hanya menganalisis kueri yang dijalankan pada tabel pengguna.

1. Membuat prosedur tersimpan Penasihat Distribusi

Untuk menjalankan penasihat dengan mudah, buat dua prosedur tersimpan baru di database. Jalankan skrip CreateDistributionAdvisor_PublicPreview yang tersedia untuk diunduh dari GitHub:

Perintah Deskripsi
dbo.write_dist_recommendation Mendefinisikan kueri yang akan dianalisis oleh DA. Anda dapat memberikan kueri secara manual, atau membaca hingga 100 kueri sebelumnya dari beban kerja sebenarnya di sys.dm_pdw_exec_requests.
dbo.read_dist_recommendation Menjalankan penasihat dan menghasilkan rekomendasi.

Berikut adalah contoh bagaimana Anda dapat menjalankan penasihat.

2a. Jalankan penasihat pada beban kerja sebelumnya di DMV

Jalankan perintah berikut untuk membaca hingga 100 kueri terakhir dalam beban kerja untuk analisis dan rekomendasi distribusi:

EXEC dbo.write_dist_recommendation <Number of Queries max 100>, NULL
go
EXEC dbo.read_dist_recommendation;
go

Untuk melihat kueri mana yang dianalisis oleh DA, jalankan skrip e2e_queries_used_for_recommendations.sql yang tersedia untuk diunduh dari GitHub.

2b. Menjalankan penasihat pada kueri yang dipilih

Parameter pertama di dbo.write_dist_recommendation harus diatur ke 0, dan parameter kedua adalah daftar yang dipisahkan titik koma hingga 100 kueri yang akan dianalisis DA. Pada contoh di bawah ini, kami ingin melihat rekomendasi distribusi untuk dua pernyataan yang dipisahkan oleh titik koma, select count (*) from t1; dan select * from t1 join t2 on t1.a1 = t2.a1;.

EXEC dbo.write_dist_recommendation 0, 'select count (*) from t1; select * from t1 join t2 on t1.a1 = t2.a1;'
go
EXEC dbo.read_dist_recommendation;
go

3. Melihat rekomendasi

Prosedur tersimpan sistem dbo.read_dist_recommendation akan menampilkan rekomendasi dalam format berikut saat eksekusi selesai:

Nama kolom Keterangan
Table_name Tabel yang dianalisis DA. Satu baris per tabel terlepas dari adanya perubahan rekomendasi.
Current_Distribution Strategi distribusi tabel saat ini.
Recommended_Distribution Distribusi yang direkomendasikan. Distribusi ini bisa sama dengan Current_Distribution jika tidak ada perubahan yang disarankan.
Distribusi_Ubah_Perintah Perintah CTAS T-SQL untuk mengimplementasikan rekomendasi.

4. Menerapkan saran

  • Jalankan perintah CTAS yang disediakan oleh Penasihat Distribusi untuk membuat tabel baru dengan strategi distribusi yang direkomendasikan.
  • Ubah kueri untuk dijalankan di tabel baru.
  • Jalankan kueri pada tabel lama dan baru untuk membandingkan peningkatan performa.

Catatan

Untuk membantu kami meningkatkan Distribution Advisor, silakan isi survei cepat ini.

Pemecahan Masalah

Bagian ini berisi skenario pemecahan masalah umum dan kesalahan umum yang mungkin Anda temui.

1. Status kedaluarsa dari eksekusi penasihat sebelumnya

1a. Gejala:

Anda melihat pesan kesalahan ini saat menjalankan penasihat:

Msg 110813, Level 16, State 1, Line 1
Calling GetLastScalarResult() before executing scalar subquery.
1b. Mitigasi:
  • Verifikasi bahwa Anda menggunakan tanda kutip tunggal '' untuk menjalankan penasihat pada kueri tertentu.
  • Mulai sesi baru di SSMS dan jalankan penasihat.

2. Kesalahan saat menjalankan penasihat

2a. Gejala:

Panel 'hasil' menampilkan CommandToInvokeAdvisorString di bawah ini, tetapi tidak menampilkan RecommendationOutput di bawah ini.

Misalnya, Anda hanya melihat kumpulan hasil Command_to_Invoke_Distribution_Advisor.

Screenshot of the output of a T-SQL result showing the Command_to_Invoke_Distribution_Advisor.

Tapi bukan kumpulan hasil kedua yang berisi tabel yang mengubah perintah T-SQL:

Screenshot of the output of a T-SQL result showing the Command_to_Invoke_Distribution_Advisor with a second resultset containing table change T-SQL commands.

2b. Mitigasi:
  • Periksa output CommandToInvokeAdvisorString di atas.

  • Hapus kueri yang mungkin tidak valid lagi yang mungkin telah ditambahkan di sini baik dari kueri yang dipilih sendiri maupun dari DMV dengan mengedit klausa WHERE di: Permintaan yang Dipertimbangkan oleh DA.

3. Kesalahan selama pasca-pemrosesan output rekomendasi

3a. Gejala:

Anda melihat pesan kesalahan berikut.

Invalid length parameter passed to the LEFT or SUBSTRING function.
3b. Mitigasi:

Pastikan Anda memiliki versi prosedur tersimpan terbaru dari GitHub:

Tanggapan grup produk Azure Synapse

Untuk membantu kami meningkatkan Distribution Advisor, silakan isi survei cepat ini.

Jika Anda memerlukan informasi yang tidak tersedia di artikel ini, mencari Microsoft Q&A halaman pertanyaan untuk Azure Synapse adalah tempat Anda untuk mengajukan pertanyaan kepada pengguna lain dan ke Grup Produk Azure Synapse Analytics.

Kami secara aktif memantau forum ini untuk memastikan bahwa pertanyaan Anda dijawab baik oleh pengguna lain atau salah satu dari kami. Jika Anda lebih suka mengajukan pertanyaan anda di Stack Overflow, kami juga memiliki Azure Synapse Analytics Stack Overflow Forum internet.

Untuk permintaan fitur, gunakan halaman Umpan Balik Azure Synapse Analytics. Menambahkan permintaan Anda atau melakukan up-vote pada permintaan lain membantu kami untuk fokus pada fitur yang paling diminati.

Langkah berikutnya