Analisis kinerja kueri

Saat kueri Anda dijalankan, Azure Databricks mengembalikan wawasan kinerja kueri yang menandai peluang untuk meningkatkan kinerja dan melaporkan optimasi yang sudah diterapkan. Setiap wawasan mencakup rekomendasi yang bisa Anda tindakkan, seperti memadatkan file kecil, mengumpulkan statistik, atau mengubah ukuran gudang.

Menemukan wawasan dan rekomendasi untuk kueri Anda

Wawasan muncul di riwayat kueri Anda dan di profil kueri. Panel detail kueri memperlihatkan ringkasan wawasan, diberi peringkat berdasarkan perkiraan efeknya pada total durasi tugas. Tab Wawasan performa di profil kueri memperlihatkan detail lengkap untuk setiap wawasan.

Optimalkan dengan Kode Genie

Saat kueri memiliki wawasan yang dapat ditindakkan, pilih Optimalkan untuk membuka Kode Genie. Untuk wawasan yang memerlukan perubahan kueri, Kode Genie menulis ulang kueri dan menyajikan perubahan untuk persetujuan Anda. Untuk wawasan yang melibatkan perubahan tabel atau komputasi, Kode Genie meringkas tindakan yang direkomendasikan sebagai teks bahasa biasa.

Untuk mempelajari selengkapnya tentang bekerja dengan Genie Code, lihat Kode Genie.

Wawasan pengoptimalan kueri

COVERAGE_FILTER_KEYS_CLUSTERING

Tabel diklusterkan oleh satu atau beberapa kunci yang tidak digunakan dalam filter selama pemindaian tabel.

Rekomendasi: Tambahkan filter pada kunci pengklusteran untuk mengurangi byte yang dibaca.

COVERAGE_FILTER_KEYS_PARTITIONING

Tabel dipartisi oleh satu atau beberapa kunci yang tidak digunakan dalam filter selama pemindaian tabel.

Rekomendasi: Tambahkan filter pada kunci partisi untuk mengurangi byte yang dibaca.

COVERAGE_PHOTON

Photon tidak dapat mempercepat operasi ini, sehingga kueri menggunakan mesin runtime standar.

Rekomendasi: Tinjau Batasan Foton dan sesuaikan kueri untuk menggunakan jalur eksekusi yang didukung.

PENGGABUNGAN_MEMECAH

Gabungan menghasilkan lebih banyak baris secara signifikan daripada yang dibacanya.

Rekomendasi: Tentukan subset hasil mana yang Anda butuhkan, lalu perbarui kondisi gabungan atau kurangi jumlah baris input dari kedua relasi.

FLOW_FULL_RECOMPUTE

Alur berjalan sebagai komputasi ulang penuh.

Rekomendasi: Tulis ulang kueri untuk dukungan inkremental untuk mengurangi byte yang dibaca.

REDUNDANT_AGGREGATION

Operasi agregat tidak mengubah hasil kueri.

Rekomendasi: Hapus agregat atau terapkan batasan kunci utama dan asing.

REDUNDANT_JOIN

Gabungan luar tidak mengubah jumlah baris di sisi luar, dan tidak ada kolom dari tabel yang digabungkan yang digunakan.

Rekomendasi: Hapus join atau terapkan primary key atau constraint unik.

SELECTIVE_JOIN

Gabungan menghasilkan baris yang jauh lebih sedikit daripada yang dibacanya.

Rekomendasi: Tentukan subset hasil mana yang Anda butuhkan, lalu tambahkan filter sebelum gabungan untuk mengurangi baris input.

WIDE_PROJECTION

Kueri memproyeksikan semua kolom dari tabel.

Rekomendasi: Project hanya kolom yang perlu Anda kurangi byte yang dibaca.

Wawasan tata letak data

TULIS_BERSAMAAN

Penulisan bersamaan ke tabel menyebabkan konflik yang diselesaikan atau gagal secara otomatis.

Rekomendasi: Tinjau riwayat Delta untuk mengidentifikasi penulisan bersamaan dan menyesuaikan penjadwalan untuk menghindari konflik.

COVERAGE_STATS_DELTA

Statistik lompati data Delta hilang atau tidak lengkap untuk filter file pemindaian tabel, sehingga kueri menggunakan pemfilteran dalam file.

Status statistik untuk setiap filter dapat berupa salah satu hal berikut:

  • Penuh: Statistik tersedia untuk semua filter.
  • Parsial: Statistik tersedia untuk subset filter.
  • Tidak tersedia: Statistik tidak tersedia untuk filter apa pun.
  • Tidak terpakai: Statistik tidak dapat digunakan karena filter mengonversi jenis data.

Rekomendasi:Kumpulkan statistik Delta untuk mengurangi byte yang dibaca.

COVERAGE_STATS_OPTIMIZER

Statistik pengoptimal berbasis biaya hilang atau tidak lengkap, sehingga rencana kueri menggunakan heuristik standar.

Rekomendasi:Kumpulkan statistik untuk memungkinkan pengoptimal menghasilkan rencana yang lebih baik.

DATA_FILE_SIZE

Pemindaian tabel membaca banyak file kecil, yang meningkatkan waktu pemindaian.

Recommendations:

DATA_SKEW

Data didistribusikan secara tidak merata di seluruh sumber daya komputasi.

Rekomendasi: Tinjau distribusi data, lalu gunakan salting kunci atau pra-agregasi untuk menyeimbangkan beban kerja.

MANUAL_DATA_LAYOUT

Tabel ini dioptimalkan secara manual dan dapat memperoleh manfaat dari Klaster Cairan Otomatis.

Recommendations:

  • Konversi tabel dari eksternal ke dikelola untuk performa yang lebih baik dan pemeliharaan otomatis.
  • Aktifkan Pengoptimalan Prediktif pada tabel untuk operasi pemeliharaan otomatis.
  • Aktifkan pengklusteran otomatis pada tabel untuk mengurangi byte yang dibaca.

Wawasan komputasi dan sumber daya

DATA_SPILL

Data ditumpahkan ke disk selama eksekusi kueri karena data tidak pas dalam memori.

Rekomendasi: Tingkatkan ukuran gudang untuk menambahkan memori. Kurangi jumlah baris, kolom, atau ukuran kolom besar (string, array, peta, struct) untuk mengurangi penggunaan memori.

EXCESSIVE_QUEUE_TIME

Kueri menunggu di antrean gudang .

Rekomendasi: Tingkatkan jumlah maksimum kluster pada gudang untuk mengurangi waktu antrean.

IO_THROTTLING

Permintaan penyimpanan cloud dibatasi oleh penyedia cloud.

Rekomendasi: Hubungi administrator Anda untuk meminta peningkatan batas permintaan penyimpanan dari penyedia cloud Anda.

Percepatan yang diterapkan

Wawasan ini menjelaskan optimasi yang sudah diterapkan Azure Databricks selama eksekusi query. Item tersebut muncul di tab Wawasan Kinerja dengan label Accelerated dan tidak memerlukan tindakan.

AUTO_LIQUID_CLUSTERING

Kueri ini membaca data lebih sedikit karena tabelnya menggunakan Klaster Cairan Otomatis. Azure Databricks secara terus-menerus mengelompokkan setiap tabel berdasarkan kunci yang dipelajari dari beban kerja Anda, sehingga memindai file yang tidak cocok dengan filter Anda. Tidak diperlukan penyetelan atau partisi manual.

HISTORY_BASED_JOIN_STRATEGY

Azure Databricks mengoptimalkan join kueri ini menggunakan pengukuran dari run query serupa sebelumnya. Ia memilih broadcast join daripada mengocok data di seluruh cluster, berdasarkan riwayat beban kerja Anda. Tidak diperlukan perubahan kueri.

SHORT_QUERY_PRIORITIZATION

Meskipun klaster sudah penuh, Azure Databricks memprediksi query ini akan shortrunning dan langsung menjalankannya melalui jalur cepat daripada menahannya di antrean di balik query yang lebih berat. Ini membuat beban kerja interaktif tetap responsif saat beban.

Sumber daya tambahan

Untuk gambaran umum yang lebih luas tentang praktik terbaik performa, lihat Panduan Komprehensif untuk Mengoptimalkan Beban Kerja Databricks, Spark, dan Delta Lake.