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.
Catatan
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.
Informasi lompati data dikumpulkan secara otomatis saat Anda menulis data ke dalam tabel. Azure Databricks memanfaatkan informasi ini (nilai minimum dan maksimum, jumlah null, dan total rekaman per file) pada waktu kueri untuk menyediakan kueri yang lebih cepat.
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 berjalan ANALYZE, 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 terkelola 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:
-- For Delta tables
ALTER TABLE table_name SET TBLPROPERTIES('delta.dataSkippingStatsColumns' = 'col1, col2, col3')
-- For Iceberg tables
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 dimanfaat 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
Catatan
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?
Catatan
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 lokalitas akan menurun seiring munculnya kolom tambahan. Pengurutan Z pada kolom yang tidak memiliki statistik yang dikumpulkan pada kolom tersebut tidak akan efektif dan membuang-buang sumber daya. Hal ini dikarenakan pelompatan data memerlukan statistik kolom lokal seperti minimum, maksimum, dan hitungan. Anda dapat mengonfigurasi pengumpulan statistik pada kolom tertentu dengan cara mengatur ulang kolom dalam skema atau meningkatkan jumlah kolom untuk mengumpulkan statistik.
Catatan
Urutan Z tidak idempotensi tetapi bertujuan untuk menjadi operasi inkremental. Waktu yang diperlukan untuk pemesanan Z tidak dijamin akan berkurang dalam beberapa kali eksekusi. Namun, jika tidak ada data baru yang ditambahkan ke partisi yang hanya diurutkan Z, pengurutan Z lain dari partisi tersebut tidak akan berpengaruh apa pun.
Pengurutan Z bertujuan untuk menghasilkan file data yang seimbang secara merata sehubungan dengan jumlah tuple, tetapi belum tentu ukuran data pada disk. Kedua ukuran tersebut paling sering berkorelasi, tetapi mungkin ada situasi ketika itu tidak demikian, sehingga membawa ke bias dalam waktu tugas yang dioptimalkan.
Misalnya, jika Anda
ZORDER BYberkencan dan rekaman terbaru Anda semuanya jauh lebih luas (misalnya array atau nilai string yang lebih panjang) daripada yang di masa lalu, diharapkan durasi tugas pekerjaan akan condong, serta ukuran file yangOPTIMIZEdihasilkan. Namun, ini hanya masalah untuk perintahOPTIMIZEitu sendiri; seharusnya tidak memiliki dampak negatif pada kueri berikutnya.