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.
Note
Di Databricks Runtime 13.3 ke atas, Databricks merekomendasikan penggunaan pengklusteran cair untuk tata letak tabel. Pengklusteran tidak kompatibel dengan urutan Z. Lihat Menggunakan pengklusteran cair untuk tabel.
Statistik pengabaian data dikumpulkan secara otomatis saat Anda menulis data ke Delta Lake atau tabel Apache Iceberg terkelola. Azure Databricks menggunakan statistik per file (nilai minimum dan maksimum, jumlah null, dan total rekaman) pada waktu kueri untuk melewati file yang tidak relevan dan mempercepat kueri.
Anda harus memiliki statistik yang dikumpulkan untuk kolom yang digunakan dalam ZORDER pernyataan. Lihat Apa itu Z-ordering?.
Tentukan kolom statistik
Untuk tabel eksternal Unity Catalog, statistik dikumpulkan pada 32 kolom pertama yang ditentukan dalam skema tabel Anda secara default. Untuk tabel yang terkelola pada Unity Catalog, statistik pengelewatan file dipilih dengan cerdas menggunakan pengoptimalan prediktif, dan tidak memiliki batas 32 kolom. Pengoptimalan prediktif secara otomatis menjalankan ANALYZE, sebuah perintah untuk mengumpulkan statistik. Databricks merekomendasikan untuk mengaktifkan pengoptimalan prediktif untuk semua tabel terkelola Unity Catalog untuk menyederhanakan pemeliharaan data dan mengurangi biaya penyimpanan. Lihat Pengoptimalan prediktif untuk tabel yang dikelola oleh Unity Catalog.
Jika Anda tidak menggunakan pengoptimalan prediktif, Anda dapat mengubah perilaku yang membatasi koleksi statistik menjadi 32 kolom dengan mengatur salah satu properti tabel berikut:
| Properti tabel | Dukungan untuk Databricks Runtime | Deskripsi |
|---|---|---|
dataSkippingNumIndexedCols |
Semua versi Databricks Runtime yang didukung | Menambah atau mengurangi jumlah kolom tempat statistik dikumpulkan. Bergantung pada urutan kolom. |
dataSkippingStatsColumns |
Databricks Runtime 13.3 LTS ke atas | Tentukan daftar nama kolom yang statistiknya dikumpulkan. Supersedes dataSkippingNumIndexedCols. |
Properti tabel dapat diatur pada pembuatan tabel atau dengan ALTER TABLE pernyataan. Lihat Referensi properti tabel. Contoh berikut mengambil alih perilaku pengumpulan statistik default untuk mengatur kumpulan statistik pada kolom bernama:
Danau Delta
ALTER TABLE table_name SET TBLPROPERTIES('delta.dataSkippingStatsColumns' = 'col1, col2, col3')
Tabel Iceberg
ALTER TABLE table_name SET TBLPROPERTIES('iceberg.dataSkippingStatsColumns' = 'col1, col2, col3')
Memperbarui properti ini tidak secara otomatis mengolah ulang statistik untuk data yang ada. Sebaliknya, ini berdampak pada perilaku pengumpulan statistik di masa depan saat menambahkan atau memperbarui data dalam tabel. Statistik tidak digunakan untuk kolom yang tidak disertakan dalam daftar kolom statistik saat ini.
Di Databricks Runtime 14.3 LTS ke atas, jika Anda telah mengubah properti tabel atau mengubah kolom yang ditentukan untuk statistik, Anda dapat memicu komputasi ulang statistik secara manual untuk tabel menggunakan perintah berikut:
ANALYZE TABLE table_name COMPUTE DELTA STATISTICS
Note
Untaian panjang terpotong dalam pengumpulan statistik. Anda dapat memilih untuk mengecualikan kolom string panjang dari koleksi statistik, terutama jika kolom tidak sering digunakan untuk memfilter kueri.
Apa itu pemesanan Z?
Note
Databricks merekomendasikan penggunaan pengklusteran cairan untuk semua tabel baru. Anda tidak dapat menggunakan ZORDER dalam kombinasi dengan pengklusteran cairan. Lihat Menggunakan pengklusteran cair untuk tabel.
Urutan Z adalah teknik untuk mengkolokasikan informasi terkait dalam kumpulan file yang sama. Algoritma penghindaran data Azure Databricks secara otomatis memanfaatkan ko-lokalitas ini. Perilaku ini mengurangi jumlah data yang perlu dibaca. Untuk mengurutkan data Z-order, tentukan kolom yang akan diurutkan dalam klausa ZORDER BY.
OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)
Jika Anda mengharapkan kolom yang umum digunakan dalam predikat kueri dan jika kolom tersebut memiliki kardinalitas tinggi (yaitu, sejumlah besar nilai yang berbeda), maka gunakan ZORDER BY.
Anda dapat menentukan beberapa kolom untuk ZORDER BY sebagai daftar yang dipisahkan koma. Namun, efektivitas turun dengan setiap kolom tambahan.
Databricks merekomendasikan agar Anda tidak menggunakan ZORDER BY pada kolom yang tidak memiliki statistik yang dikumpulkan karena tidak efektif dan menggunakan sumber daya komputasi yang tidak perlu. Pengabaian data memerlukan statistik lokal kolom seperti minimum, maksimum, dan jumlah. Anda dapat mengonfigurasi pengumpulan statistik pada kolom tertentu dengan cara mengatur ulang kolom dalam skema atau meningkatkan jumlah kolom untuk mengumpulkan statistik.
Note
Urutan Z tidak idempotensi tetapi bertujuan untuk menjadi operasi inkremental. Waktu yang diperlukan untuk Z-ordering tidak dijamin akan berkurang setelah proses dijalankan beberapa kali. Namun, jika tidak ada data baru yang ditambahkan ke partisi yang hanya diurutkan Z, urutan Z lain dari partisi tersebut tidak memiliki efek apa pun.
Pengurutan Z bertujuan menghasilkan file data yang terdistribusi secara merata dalam hal jumlah tuple, tetapi tidak selalu dalam hal ukuran data di penyimpanan. Meskipun ukuran file dan jumlah tuple saling berkorelasi, ada kemungkinan terdapat situasi ketika keduanya tidak berkorelasi, yang menyebabkan waktu tugas pengoptimalan menjadi menyimpang.
Misalnya, jika Anda
ZORDER BYdate dan catatan terbaru Anda semuanya jauh lebih besar (seperti array yang lebih panjang atau nilai string yang lebih panjang) daripada catatan sebelumnya, durasi tugas jobOPTIMIZEdan ukuran file yang dihasilkan mungkin terdistorsi. Namun, hal ini hanya menjadi masalah bagi perintahOPTIMIZEitu sendiri; kemungkinan besar tidak menimbulkan dampak negatif pada kueri selanjutnya.