Menyimpan kueri dalam cache

Looker mengurangi beban pada database Anda dan meningkatkan performa dengan menggunakan hasil yang di-cache dari kueri SQL sebelumnya jika tersedia dan jika fungsi ini diizinkan oleh kebijakan penyimpanan dalam cache Anda. Halaman ini menjelaskan kebijakan penyimpanan ke cache default Looker, beserta opsi yang tersedia untuk mengubah durasi hasil yang di-cache di instance Looker Anda.

Cara Looker menggunakan kueri yang di-cache

Untuk kueri SQL, mekanisme penyiapan dalam Looker berfungsi sebagai berikut:

  1. Saat kueri SQL dijalankan dari Jelajah, Look, atau dasbor, Looker akan memeriksa cache untuk melihat apakah sudah ada hasil yang di-cache untuk kueri tersebut. Hasil yang di-cache hanya akan digunakan jika semua aspek kueri sama, termasuk kolom, filter, parameter, dan batas baris.

  2. Jika hasil yang di-cache ditemukan, Looker akan memeriksa kebijakan penyimpanan ke cache yang ditentukan dalam model LookML untuk menentukan apakah hasil yang di-cache telah berakhir. Jika hasil yang di-cache belum habis masa berlakunya, Looker akan menggunakan hasil yang di-cache untuk kueri.

  3. Jika tidak ada hasil dalam cache yang ditemukan untuk kueri, atau jika hasil dalam cache telah berakhir, Looker akan menjalankan kueri terhadap database. Hasil kueri baru kemudian akan di-cache.

Kebijakan retensi cache default adalah satu jam. Bagian berikutnya, Mengubah kebijakan retensi cache, membahas cara memperpendek atau memperpanjang jangka waktu ini, serta menjelaskan opsi untuk menyinkronkan kebijakan retensi cache dengan proses ETL (ekstrak, transformasi, dan muat) database Anda.

Mengubah kebijakan retensi cache

Anda dapat menentukan kebijakan retensi cache di tingkat Jelajah LookML dan tingkat model LookML.

Mekanisme penyimpanan cache yang direkomendasikan adalah menggunakan parameter datagroup di tingkat model. Grup data memungkinkan Anda menyinkronkan kebijakan retensi cache model dengan jadwal ETL database menggunakan parameter sql_trigger dan dengan menetapkan interval habis masa berlaku cache menggunakan parameter max_cache_age. Untuk mengetahui informasi selengkapnya, lihat bagian Meng-cache kueri dan membangun ulang tabel turunan persisten (PDT) dengan grup data.

Untuk pendekatan yang lebih sederhana, Anda dapat menggunakan parameter persist_for di tingkat model atau tingkat Eksplorasi. Dengan menggunakan parameter persist_for dengan cara ini, Anda dapat menetapkan interval masa berlaku cache yang menggantikan interval default satu jam. Namun, penggunaan persist_for kurang andal dibandingkan dengan penggunaan grup data karena beberapa alasan, seperti yang dibahas di bagian Meng-cache kueri dengan persist_for.

Jika Jelajah atau model memiliki grup data atau persist_for yang ditentukan, kebijakan caching akan diubah sebagai berikut:

  • Sebelum interval persist_for atau interval max_cache_age grup data berakhir: Jika kueri dijalankan ulang, Looker akan menarik data dari cache.
  • Pada saat interval persist_for atau interval max_cache_age grup data berakhir: Looker menghapus data dari cache.
  • Setelah interval persist_for atau interval max_cache_age grup data berakhir: Jika kueri dijalankan ulang, Looker akan menarik data langsung dari database dan mereset interval persist_for atau max_cache_age.

Satu poin penting di sini adalah bahwa data dihapus dari cache saat interval persist_for atau max_cache_age berakhir.

Jika cache mencapai batas penyimpanan, data akan dikeluarkan berdasarkan algoritma Least Recently Used (LRU), tanpa jaminan bahwa data dengan interval persist_for atau max_cache_age yang telah berakhir akan dihapus sekaligus.

Meminimalkan waktu data Anda berada di cache

Looker akan selalu menulis hasil kueri ke cache. Meskipun interval persist_for dan max_cache_age disetel ke nol, data yang di-cache mungkin masih disimpan hingga 10 menit. Semua data pelanggan yang disimpan di cache disk dienkripsi dengan Advanced Encryption Standard (AES).

Untuk meminimalkan durasi penyimpanan data di cache:

  • Untuk parameter persist_for (untuk model atau Eksplorasi) atau parameter max_cache_age (untuk grup data), tetapkan nilai ke 0 minutes. Looker menghapus cache saat interval persist_for berakhir, atau saat data mencapai interval max_cache_age yang ditentukan dalam datagroup-nya. (Anda tidak perlu menyetel parameter persist_for dari tabel turunan persisten (PDT) ke 0 minutes untuk meminimalkan jumlah data yang disimpan dalam cache. PDT ditulis ke database itu sendiri, bukan ke cache.)
  • Tetapkan parameter suggest_persist_for ke interval kecil. Nilai suggest_persist_for menentukan berapa lama Looker harus menyimpan saran filter dalam cache. Saran filter didasarkan pada kueri nilai untuk kolom yang sedang difilter. Hasil kueri ini disimpan dalam cache sehingga Looker dapat memberikan saran dengan cepat saat pengguna mengetik di kolom teks filter. Defaultnya adalah menyimpan saran filter ke cache selama 6 jam. Untuk meminimalkan durasi data Anda berada di cache, tetapkan nilai suggest_persist_for ke yang lebih rendah, seperti 5 minutes.

Memeriksa apakah kueri ditampilkan dari cache

Di jendela Jelajahi, Anda dapat menentukan apakah kueri telah ditampilkan dari cache dengan melihat informasi di samping tombol Jalankan setelah Anda menjalankan kueri.

Saat kueri ditampilkan dari cache, teks "dari cache" akan ditampilkan. Jika tidak, jumlah waktu yang diperlukan untuk menampilkan kueri akan ditampilkan.

Memaksa hasil baru dibuat dari database

Di jendela Jelajah, Anda dapat memaksa hasil baru diambil dari database. Setelah Anda menjalankan kueri (termasuk kueri hasil gabungan), pilih opsi Hapus Cache & Muat Ulang dari menu roda gigi Tindakan Jelajahi.

Meng-cache kueri dan membangun kembali tabel turunan persisten (PDT) dengan grup data

Gunakan grup data untuk mengoordinasikan jadwal ETL (ekstrak, transformasi, dan pemuatan) database Anda dengan kebijakan caching Looker dan jadwal pembangunan ulang tabel turunan persisten (PDT).

Anda dapat menggunakan grup data untuk menentukan pemicu pembangunan ulang PDT berdasarkan waktu penambahan data baru ke database Anda. Kemudian, Anda dapat menerapkan grup data yang sama ke Eksplorasi atau model sehingga hasil yang di-cache juga akan berakhir masa berlakunya saat PDT dibangun ulang.

Atau, Anda dapat menggunakan grup data untuk memisahkan pemicu pembangunan ulang PDT dari usia cache maksimum. Hal ini dapat berguna jika Anda memiliki Eksplorasi yang didasarkan pada data yang diperbarui sangat sering dan digabungkan ke PDT yang dibangun ulang lebih jarang. Dalam hal ini, Anda mungkin ingin cache kueri direset lebih sering daripada PDT dibangun ulang.

Menentukan grup data

Tentukan grup data dengan parameter datagroup, baik dalam file model maupun dalam file LookML-nya sendiri. Anda dapat menentukan beberapa grup data jika menginginkan kebijakan pembangunan ulang PDT dan caching yang berbeda untuk berbagai Eksplorasi atau PDT dalam project Anda.

Parameter datagroup dapat memiliki subparameter berikut:

  • label — Menentukan label opsional untuk grup data.
  • description — Menentukan deskripsi opsional untuk grup data yang dapat digunakan untuk menjelaskan tujuan dan mekanisme grup data.
  • max_cache_age — Menentukan string yang menentukan periode waktu. Saat usia cache kueri melebihi jangka waktu, Looker akan membatalkan validasi cache. Saat kueri dikeluarkan lagi, Looker akan mengirimkan kueri ke database untuk mendapatkan hasil terbaru.
  • sql_trigger — Menentukan kueri SQL yang menampilkan satu baris dengan satu kolom. Jika nilai yang ditampilkan oleh kueri berbeda dengan hasil kueri sebelumnya, grup data akan memasuki status dipicu.
  • interval_trigger — Menentukan jadwal waktu untuk memicu grup data, seperti "24 hours".

Minimal, grup data harus memiliki setidaknya parameter max_cache_age, parameter sql_trigger, atau parameter interval_trigger.

Berikut adalah contoh grup data yang telah menyiapkan sql_trigger untuk membangun ulang PDT setiap hari. Selain itu, max_cache_age disetel untuk menghapus cache kueri setiap dua jam, jika ada Eksplorasi yang menggabungkan PDT ke data lain yang diperbarui lebih sering daripada sekali sehari.

datagroup: customers_datagroup {
  sql_trigger: SELECT DATE(NOW());;
  max_cache_age: "2 hours"
}

Setelah menentukan grup data, Anda dapat menetapkannya ke Eksplorasi dan PDT:

Menggunakan grup data untuk menentukan pemicu pembangunan ulang PDT

Untuk menentukan pemicu pembangunan ulang PDT menggunakan grup data, buat parameter datagroup dengan subparameter sql_trigger atau interval_trigger. Kemudian, tetapkan grup data ke PDT individual menggunakan subparameter datagroup_trigger dalam definisi derived_table PDT. Jika Anda menggunakan datagroup_trigger untuk PDT, Anda tidak perlu menentukan strategi persistensi lain untuk tabel turunan. Jika Anda menentukan beberapa strategi persistensi untuk PDT, Anda akan mendapatkan peringatan di IDE Looker, dan hanya datagroup_trigger yang akan digunakan.

Berikut adalah contoh definisi PDT yang menggunakan grup data customers_datagroup. Definisi ini juga menambahkan beberapa indeks, baik di customer_id maupun first_order_date. Untuk mengetahui informasi selengkapnya tentang cara menentukan PDT, lihat halaman dokumentasi Tabel turunan di Looker.

view: customer_order_facts {
  derived_table: {
    sql: ... ;;
    datagroup_trigger: customers_datagroup
    indexes: ["customer_id", "first_order_date"]
  }
}

Lihat halaman dokumentasi Tabel turunan di Looker untuk mengetahui informasi selengkapnya tentang cara kerja grup data dengan PDT.

Menggunakan grup data untuk menentukan reset cache kueri untuk Eksplorasi

Saat grup data dipicu, regenerator Looker akan membangun ulang PDT yang menggunakan grup data tersebut sebagai strategi persistensi. Setelah PDT grup data dibangun ulang, Looker akan menghapus cache untuk Eksplorasi yang menggunakan PDT grup data yang dibangun ulang. Anda dapat menambahkan parameter max_cache_age ke definisi grup data jika ingin menyesuaikan jadwal reset cache kueri untuk grup data. Parameter max_cache_age memungkinkan Anda menghapus cache kueri sesuai jadwal yang ditentukan, selain reset cache kueri otomatis yang dilakukan Looker saat PDT grup data dibangun ulang.

Untuk menentukan kebijakan caching kueri dengan grup data, buat parameter datagroup dengan subparameter max_cache_age.

Untuk menentukan grup data yang akan digunakan untuk mereset cache kueri di Eksplorasi, gunakan parameter persist_with:

Contoh berikut menunjukkan grup data bernama orders_datagroup yang ditentukan dalam file model. Grup data memiliki parameter sql_trigger, yang menentukan bahwa kueri select max(id) from my_tablename akan digunakan untuk mendeteksi kapan ETL telah terjadi. Meskipun ETL tersebut tidak terjadi untuk sementara waktu, max_cache_age datagroup menentukan bahwa data yang di-cache hanya akan digunakan maksimal selama 24 jam.

Parameter persist_with model mengarah ke kebijakan caching orders_datagroup, yang berarti ini akan menjadi kebijakan caching default untuk semua Eksplorasi dalam model. Namun, kita tidak ingin menggunakan kebijakan caching default model untuk Eksplorasi customer_facts dan customer_background, jadi kita dapat menambahkan parameter persist_with untuk menentukan kebijakan caching yang berbeda untuk kedua Eksplorasi ini. Eksplorasi orders dan orders_facts tidak memiliki parameter persist_with, sehingga akan menggunakan kebijakan caching default model: orders_datagroup.

datagroup: orders_datagroup {
  sql_trigger: SELECT max(id) FROM my_tablename ;;
  max_cache_age: "24 hours"
}

datagroup: customers_datagroup {
  sql_trigger: SELECT max(id) FROM my_other_tablename ;;
}

persist_with: orders_datagroup

explore: orders { ... }

explore: order_facts { ... }

explore: customer_facts {
  persist_with: customers_datagroup
  ...
}

explore: customer_background {
  persist_with: customers_datagroup
  ...
}

Jika persist_with dan persist_for ditentukan, Anda akan menerima peringatan validasi dan persist_with akan digunakan.

Menggunakan grup data untuk memicu pengiriman terjadwal

Grup data juga dapat digunakan untuk memicu pengiriman dasbor atau Look. Dengan opsi ini, Looker akan mengirimkan data Anda saat grup data selesai, sehingga konten terjadwal selalu terbaru.

Menggunakan panel Admin untuk grup data

Jika memiliki peran admin Looker, Anda dapat menggunakan halaman Grup data panel Admin untuk melihat grup data yang ada. Anda dapat melihat koneksi, model, dan status saat ini dari setiap grup data serta — jika ditentukan dalam LookML — label dan deskripsi untuk setiap grup data. Anda juga dapat mereset cache untuk grup data, memicu grup data, atau membuka LookML grup data.

Menyimpan kueri dalam cache dengan persist_for

Gunakan parameter persist_for di tingkat model atau tingkat Jelajah untuk mengubah interval retensi cache default Looker selama 1 jam. Anda dapat menetapkan interval sekecil 0 minutes dan interval setinggi 8760 hours (1 tahun) atau lebih tinggi.

Menentukan parameter persist_for bisa lebih cepat dan sederhana, tetapi kurang andal, dibandingkan menentukan grup data. Grup data direkomendasikan daripada persist_for karena alasan berikut:

  • Grup data dapat disinkronkan dengan proses ETL database Anda.
  • Anda dapat menggunakan ulang grup data di beberapa model dan Eksplorasi. Artinya, Anda dapat memperbarui max_cache_age dari grup data, dan kebijakan caching akan diperbarui di setiap tempat grup data digunakan.
  • Anda dapat menghapus semua cache yang terkait dengan grup data dari halaman Grup data.