Penyimpanan kueri dalam cache

Caching adalah teknik penting untuk meningkatkan kinerja sistem gudang data dengan menghindari keharusan untuk menghitung ulang atau mengambil data yang sama beberapa kali. Di Databricks SQL, cache dapat secara signifikan mempercepat eksekusi kueri dan meminimalkan penggunaan SQL warehouse, sehingga menurunkan biaya dan membuat pemanfaatan sumber daya lebih efisien. Setiap lapisan cache meningkatkan kinerja kueri, meminimalkan penggunaan kluster, dan mengoptimalkan pemanfaatan sumber daya untuk pengalaman penggunaan gudang data yang lancar.

Cache memberikan berbagai keuntungan pada gudang data, termasuk:

  • Kecepatan: Dengan menyimpan hasil kueri atau data yang sering diakses di memori atau media penyimpanan lain yang cepat, mekanisme cache dapat secara signifikan mengurangi waktu eksekusi kueri. Penyimpanan ini sangat bermanfaat untuk kueri berulang, karena sistem dapat dengan cepat mengambil hasil cache alih-alih merekomputasinya.
  • Pengurangan penggunaan klaster: Penyimpanan cache meminimalkan kebutuhan akan sumber daya komputasi tambahan dengan menggunakan kembali hasil yang telah dihitung sebelumnya. Ini mengurangi waktu aktif gudang secara keseluruhan dan permintaan untuk kluster komputasi tambahan, yang menyebabkan penghematan biaya dan alokasi sumber daya yang lebih baik.

Jenis cache kueri di Databricks SQL

Databricks SQL menerapkan beberapa jenis cache kueri.

cache kueri

  • Cache UI SQL Databricks: Penyimpanan cache per pengguna untuk hasil kueri dan visualisasi editor SQL di UI SQL Databricks. Saat pengguna pertama kali membuka kueri SQL atau dasbor SQL warisan, cache UI Databricks SQL menampilkan hasil kueri terbaru, termasuk hasil dari eksekusi terjadwal.

    Note

    Cache UI Databricks SQL tidak berlaku untuk dasbor AI/BI (sebelumnya dasbor Lakeview). Dasbor AI/BI memiliki perilaku cache tersendiri. Lihat pengoptimalan dan penembolokan himpunan data .

    Cache UI Databricks SQL memiliki siklus hidup maksimal 7 hari. Cache terletak di dalam sistem file Azure Databricks Anda di akun Anda. Anda dapat menghapus hasil kueri dengan menjalankan kembali kueri yang tidak lagi ingin Anda simpan. Setelah dijalankan kembali, hasil kueri lama dihapus dari cache. Selain itu, cache menjadi tidak valid setelah tabel yang mendasarinya diperbarui.

  • Cache hasil: Penyimpanan cache per kluster untuk hasil kueri dari semua kueri melalui gudang data SQL. Penyimpanan cache hasil mencakup cache hasil lokal dan cache hasil jarak jauh, yang bekerja sama untuk meningkatkan kinerja kueri dengan menyimpan hasil kueri dalam memori atau media penyimpanan jarak jauh.

    • Cache lokal: Cache lokal adalah cache dalam memori yang menyimpan hasil kueri untuk masa pakai kluster atau sampai cache penuh, mana pun yang lebih dulu. Cache ini berguna untuk mempercepat kueri berulang, menghilangkan kebutuhan untuk mengolah ulang hasil yang sama. Namun, setelah kluster dihentikan atau dimulai ulang, cache dibersihkan dan semua hasil kueri dihapus.
    • Cache hasil jarak jauh: Cache hasil jarak jauh adalah sistem cache khusus serverless yang menyimpan hasil kueri dengan mempertahankannya sebagai data sistem ruang kerja. Akibatnya, cache ini tidak diinvalidasi oleh penghentian atau dimulainya ulang SQL Warehouse. Cache hasil jarak jauh mengatasi masalah umum dalam menyimpan hasil kueri di cache dalam memori, yang hanya tersedia selama sumber daya komputasi masih aktif. Cache jarak jauh adalah cache bersama persisten di semua gudang di ruang kerja Databricks.

    Mengakses cache hasil jarak jauh memerlukan warehouse yang aktif. Saat memproses kueri, kluster mula-mula memeriksa tembolok lokalnya, lalu memeriksa tembolok hasil jarak jauh jika perlu. Hanya jika hasil kueri tidak di-cache di salah satu cache, kueri dieksekusi. Cache lokal dan jarak jauh memiliki siklus hidup 24 jam, yang dimulai pada entri cache. Cache hasil jarak jauh tetap ada meskipun terjadi penghentian atau mulai ulang gudang data SQL. Kedua cache dibatalkan ketika tabel yang mendasarinya diperbarui.

    Cache hasil jarak jauh tersedia untuk kueri menggunakan klien ODBC / JDBC dan API Pernyataan SQL.

    Untuk menonaktifkan caching hasil kueri, Anda dapat menjalankan SET use_cached_result = false di editor SQL.

    Penting

    Anda harus menggunakan opsi ini hanya dalam pengujian atau pembandingan.

  • Cache disk: Penyimpanan cache SSD lokal untuk data yang dibaca dari penyimpanan data untuk kueri melalui gudang data SQL. Cache disk dirancang untuk meningkatkan performa kueri dengan menyimpan data pada disk, memungkinkan pembacaan data yang dipercepat. Data secara otomatis di-cache ketika file diambil, menggunakan format perantara yang cepat. Dengan menyimpan salinan file pada penyimpanan lokal yang dilampirkan ke simpul komputasi, cache disk memastikan data terletak lebih dekat dengan pekerja, menghasilkan peningkatan performa kueri. Lihat Mengoptimalkan kinerja dengan cache pada Azure Databricks.

Selain fungsi utamanya, cache disk secara otomatis mendeteksi perubahan pada file data yang mendasar. Ketika mendeteksi perubahan, cache tidak valid. Cache disk berbagi karakteristik siklus hidup yang sama dengan cache hasil lokal. Ini berarti bahwa ketika kluster dihentikan atau dimulai ulang, cache dibersihkan dan perlu diisi ulang.

Cache hasil kueri dan cache disk memengaruhi kueri di UI Databricks SQL dan BI serta klien eksternal lainnya.