Looker mengurangi beban pada database Anda dan meningkatkan performa dengan menggunakan hasil kueri SQL sebelumnya yang di-cache saat tersedia dan saat fungsi ini diizinkan oleh kebijakan caching Anda. Halaman ini menjelaskan kebijakan caching default Looker, beserta opsi yang tersedia untuk mengubah durasi hasil yang di-cache pada instance Looker.
Cara Looker menggunakan kueri yang di-cache
Untuk kueri SQL, mekanisme caching di Looker berfungsi sebagai berikut:
Saat kueri SQL dijalankan dari Explore, Look, atau dasbor, Looker akan memeriksa cache untuk melihat apakah sudah ada hasil yang di-cache untuk kueri tersebut. Hasil yang disimpan dalam cache hanya akan digunakan jika semua aspek kueri sama, termasuk kolom, filter, parameter, dan batas baris.
Jika hasil yang di-cache ditemukan, Looker akan memeriksa kebijakan caching yang didefinisikan dalam model LookML untuk menentukan apakah hasil yang di-cache telah habis masa berlakunya. Jika hasil yang di-cache belum habis masa berlakunya, Looker akan menggunakan hasil yang di-cache untuk kueri tersebut.
Jika tidak ada hasil yang di-cache yang ditemukan untuk kueri tersebut, atau jika hasil yang di-cache telah kedaluwarsa, Looker akan menjalankan kueri terhadap database. Hasil kueri baru kemudian akan disimpan dalam cache.
Kebijakan retensi cache default adalah satu jam. Bagian selanjutnya, Memodifikasi kebijakan retensi cache, membahas cara mempersingkat atau memperpanjang jumlah waktu ini, serta menjelaskan opsi untuk menyinkronkan kebijakan retensi cache ke proses ETL (ekstrak, transformasi, dan pemuatan) database Anda.
Memodifikasi kebijakan retensi cache
Anda dapat menentukan kebijakan retensi cache di tingkat Jelajahi LookML dan di tingkat model LookML.
Mekanisme cache yang direkomendasikan adalah menggunakan parameter datagroup
pada tingkat model. Dengan datagroups, Anda dapat menyinkronkan kebijakan retensi cache model dengan jadwal ETL database menggunakan parameter sql_trigger
dan dengan menyetel interval habis masa berlaku cache dengan parameter max_cache_age
. Untuk mengetahui informasi selengkapnya, lihat bagian Menyimpan kueri ke cache dan membuat ulang PDT dengan grup data.
Untuk pendekatan yang lebih sederhana, Anda dapat menggunakan parameter persist_for
di tingkat model atau tingkat Eksplorasi. Penggunaan parameter persist_for
dengan cara ini memungkinkan Anda menetapkan interval habis masa berlaku cache yang mengganti interval default satu jam. Namun, menggunakan persist_for
kurang efektif daripada menggunakan grup data karena beberapa alasan, seperti yang dibahas di bagian Menyimpan kueri dalam cache dengan persistent_for.
Jika Explore atau model memiliki grup data atau persist_for
yang ditentukan, kebijakan caching akan diubah sebagai berikut:
- Sebelum interval
persist_for
atau intervalmax_cache_age
grup data berakhir: Jika kueri dijalankan kembali, Looker akan mengambil data dari cache. - Saat interval
persist_for
atau intervalmax_cache_age
grup data berakhir: Looker akan menghapus data dari cache. - Setelah interval
persist_for
atau intervalmax_cache_age
grup data berakhir: Jika kueri dijalankan kembali, Looker akan mengambil data dari database secara langsung dan mereset intervalpersist_for
ataumax_cache_age
.
Salah satu poin penting di sini adalah data dihapus dari cache saat interval persist_for
atau max_cache_age
berakhir.
Jika cache mencapai batas penyimpanan, data akan dikeluarkan berdasarkan algoritme yang Paling Tidak Digunakan Baru-Baru Ini (LRU), tanpa jaminan bahwa data dengan interval persist_for
atau max_cache_age
yang telah berakhir masa berlakunya akan dihapus sekaligus.
Meminimalkan waktu yang dihabiskan data Anda dalam 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 dapat disimpan hingga 10 menit. Semua data pelanggan yang disimpan di cache disk dienkripsi Advanced Encryption Standard (AES).
Untuk meminimalkan jumlah waktu data disimpan dalam cache:
- Untuk parameter
persist_for
(untuk model atau Jelajah) atau parametermax_cache_age
(untuk datagroup), tetapkan nilai ke0 minutes
. Looker akan menghapus cache saat intervalpersist_for
berakhir, atau saat data mencapai intervalmax_cache_age
yang ditentukan dalam datagroup-nya. (Anda tidak perlu menyetel parameterpersist_for
PDT ke0 minutes
untuk meminimalkan jumlah data yang disimpan di cache. PDT ditulis ke database itu sendiri, bukan ke cache.) - Setel parameter
suggest_persist_for
ke interval yang kecil. Nilaisuggest_persist_for
menentukan berapa lama Looker harus menyimpan saran filter di cache. Saran filter didasarkan pada kueri nilai untuk kolom yang sedang difilter. Hasil kueri ini disimpan di cache sehingga Looker dapat dengan cepat memberikan saran saat pengguna mengetik di kolom teks filter. Defaultnya adalah meng-cache saran filter selama 6 jam. Untuk meminimalkan jumlah waktu data Anda berada di cache, setel nilaisuggest_persist_for
ke sesuatu yang lebih rendah, seperti5 minutes
.
Memeriksa apakah kueri ditampilkan dari cache
Di jendela Explore, Anda dapat menentukan apakah kueri telah ditampilkan dari cache dengan melihat di sudut kanan atas setelah menjalankan kueri.
Ketika kueri dikembalikan dari cache, keterangan "dari cache" akan ditampilkan. Jika tidak, jumlah waktu yang diperlukan untuk menampilkan kueri akan ditampilkan.
Memaksa hasil baru untuk dibuat dari database
Di jendela Explore, Anda dapat memaksa hasil baru agar diambil dari database. Setelah menjalankan kueri (termasuk kueri hasil gabungan), pilih opsi Clear Cache & Refresh dari menu roda gigi Explore Actions, yang terdapat di bagian kanan atas layar.
Menyimpan kueri dalam cache dan membangun ulang PDT dengan grup data
Gunakan datagroups untuk mengoordinasikan jadwal ETL (ekstrak, transformasi, dan muat) database Anda dengan kebijakan caching Looker dan jadwal pembangunan ulang PDT.
Anda dapat menggunakan grup data untuk menentukan pemicu build ulang PDT berdasarkan kapan data baru ditambahkan ke database. Kemudian, Anda dapat menerapkan grup data yang sama ke model atau Explore sehingga hasil yang di-cache juga tidak berlaku lagi saat PDT Anda di-build ulang.
Atau, Anda dapat menggunakan grup data untuk memisahkan pemicu build kembali PDT dari usia cache maksimum Anda. Hal ini dapat berguna jika Anda memiliki Jelajah yang didasarkan pada data yang sering diperbarui dan digabungkan dengan PDT yang lebih jarang dibuat ulang. Dalam hal ini, sebaiknya cache kueri direset lebih sering daripada PDT yang dibuat ulang.
Menentukan grup data
Tentukan grup data dengan parameter datagroup
, baik dalam file model atau dalam file LookML-nya sendiri. Anda dapat menentukan beberapa grup data jika ingin kebijakan caching dan PDT yang berbeda untuk mem-build ulang berbagai Explore dan/atau PDT di 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 jangka waktu. Jika usia cache kueri melebihi jangka waktu, Looker akan membatalkan validasi cache. Saat kueri dikeluarkan lagi, Looker akan mengirimkan kueri tersebut ke database untuk mendapatkan hasil baru.sql_trigger
— Menentukan kueri SQL yang menampilkan satu baris dengan satu kolom. Jika nilai yang ditampilkan oleh kueri berbeda dengan hasil sebelumnya dari kueri, grup data akan masuk ke status dipicu.interval_trigger
— Menentukan jadwal waktu untuk memicu grup data, seperti"24 hours"
.
Lihat halaman dokumentasi datagroup untuk mengetahui informasi selengkapnya tentang parameter ini.
Minimal, datagroup harus memiliki setidaknya parameter max_cache_age
, parameter sql_trigger
, atau parameter interval_trigger
.
Berikut adalah contoh grup data yang menyiapkan sql_trigger
untuk mem-build ulang PDT setiap hari. Selain itu, max_cache_age
disetel untuk menghapus cache kueri setiap dua jam, jika setiap Jelajah menggabungkan PDT ke data lain yang diperbarui lebih dari sekali sehari.
datagroup: customers_datagroup {
sql_trigger: SELECT DATE(NOW());;
max_cache_age: "2 hours"
}
Setelah menentukan grup data, Anda dapat menetapkannya ke Explore dan PDT:
- Untuk menetapkan datagroup ke PDT, gunakan parameter
datagroup_trigger
pada parameterderived_table
. Lihat bagian Menggunakan grup data untuk menentukan pemicu build ulang untuk PDT di halaman ini sebagai contoh. - Untuk menetapkan grup data ke Jelajah, gunakan parameter
persist_with
di tingkat model atau tingkat Jelajah. Lihat bagian Menggunakan grup data untuk menentukan reset cache kueri untuk Eksplorasi di halaman ini sebagai contoh.
Menggunakan grup data untuk menentukan pemicu build ulang PDT
Untuk menentukan pemicu pembuatan ulang PDT menggunakan datagroups, buat parameter datagroup
dengan subparameter sql_trigger
atau interval_trigger
. Kemudian, tetapkan datagroup ke masing-masing PDT menggunakan subparameter datagroup_trigger
dalam definisi derived_table
PDT. Jika menggunakan datagroup_trigger
untuk PDT, Anda tidak perlu menentukan strategi persistensi lainnya untuk tabel turunan. Jika menentukan beberapa strategi persistensi untuk PDT, Anda akan mendapatkan peringatan di Looker IDE, dan hanya datagroup_trigger
yang akan digunakan.
Berikut adalah contoh definisi PDT yang menggunakan grup data customers_datagroup
. Definisi ini juga menambahkan beberapa indeks, pada customer_id
dan 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"]
}
}
Jika Anda memiliki PDT menurun, PDT yang bergantung pada PDT lain, berhati-hatilah untuk tidak menentukan kebijakan penyimpanan cache grup data yang tidak kompatibel.
Untuk koneksi yang memiliki atribut pengguna untuk menentukan parameter koneksi, Anda harus membuat koneksi terpisah menggunakan kolom pengganti PDT jika ingin melakukan salah satu hal berikut:
- Menggunakan PDT di model Anda
- Menggunakan grup data untuk menentukan pemicu build ulang PDT
Tanpa penggantian PDT, Anda masih dapat menggunakan grup data dengan
max_cache_age
guna menentukan kebijakan penyimpanan cache untuk Jelajah.
Lihat halaman dokumentasi Tabel turunan di Looker untuk mengetahui informasi selengkapnya tentang cara kerja grup data dengan PDT.
Menggunakan grup data guna menentukan reset cache kueri untuk Jelajah
Saat grup data dipicu, regenerator Looker akan mem-build ulang PDT yang menggunakan datagroup tersebut sebagai strategi persistensi. Setelah PDT grup data dibuat ulang, Looker akan menghapus cache untuk Jelajah yang menggunakan PDT yang dibuat ulang dari grup data. Anda dapat menambahkan parameter max_cache_age
ke definisi grup data jika ingin menyesuaikan jadwal reset cache kueri untuk datagroup tersebut. Parameter max_cache_age
memungkinkan Anda menghapus cache kueri pada jadwal yang ditentukan, selain reset cache kueri otomatis yang dilakukan Looker saat PDT grup data dibuat ulang.
Untuk menentukan kebijakan penyimpanan dalam cache kueri dengan grup data, buat parameter datagroup
dengan subparameter max_cache_age
.
Untuk menentukan grup data yang akan digunakan untuk reset cache kueri di Jelajah, gunakan parameter persist_with
:
- Untuk menetapkan grup data sebagai default untuk semua Jelajah dalam model, gunakan parameter
persist_with
di tingkat model (dalam file model). - Untuk menetapkan grup data ke setiap Jelajah, gunakan parameter
persist_with
di bagian parameterexplore
.
Contoh berikut menunjukkan grup data bernama orders_datagroup
yang ditentukan dalam file model. Grup data memiliki parameter sql_trigger
, yang menetapkan bahwa kueri select max(id) from my_tablename
akan digunakan untuk mendeteksi saat ETL terjadi. Meskipun ETL tersebut tidak terjadi untuk beberapa saat, max_cache_age
datagroup menentukan bahwa data yang di-cache hanya akan digunakan maksimal selama 24 jam.
Parameter persist_with
model mengarah ke kebijakan penyimpanan cache orders_datagroup
, yang berarti kebijakan penyimpanan dalam cache default untuk semua Jelajah dalam model akan dilakukan. Namun, kita tidak ingin menggunakan kebijakan caching default model untuk Jelajah customer_facts
dan customer_background
, sehingga kita dapat menambahkan parameter persist_with
untuk menentukan kebijakan caching yang berbeda untuk kedua Jelajah ini. Jelajah 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 datagroup untuk memicu pengiriman terjadwal
Grup data juga dapat digunakan untuk memicu pengiriman dasbor atau Tampilan. Dengan opsi ini, Looker akan mengirimkan data Anda saat grup data selesai, sehingga konten yang dijadwalkan diperbarui.
Menggunakan panel Admin untuk grup data
Jika memiliki peran admin Looker, Anda dapat menggunakan halaman Datagroups di panel Admin untuk melihat grup data yang ada. Anda dapat melihat koneksi, model, dan status saat ini dari setiap grup data dan — 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 ke 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 menyetel interval sekecil 0 minutes
dan interval setinggi 8760 hours
(1 tahun) atau lebih tinggi.
Mendefinisikan parameter persist_for
bisa lebih cepat dan sederhana, tetapi kurang andal daripada menentukan grup data. Grup data lebih direkomendasikan daripada persist_for
karena alasan berikut:
- Datagroups dapat disinkronkan dengan proses ETL database Anda.
- Anda dapat menggunakan kembali grup data di beberapa model dan Jelajah. Ini berarti Anda dapat memperbarui
max_cache_age
dari sebuah datagroup, dan akan memperbarui kebijakan caching di setiap tempat datagroup tersebut digunakan. - Anda dapat menghapus semua cache yang terkait dengan grup data dari halaman Datagroups.