Caching Metadata

Dokumen ini menjelaskan cara menggunakan cache metadata untuk meningkatkan performa kueri pada tabel objek dan beberapa jenis tabel BigLake.

Tabel objek dan beberapa jenis tabel BigLake dapat meng-cache informasi metadata tentang file di datastore eksternal—misalnya, Cloud Storage. Jenis tabel BigLake berikut mendukung penyimpanan metadata:

  • Tabel BigLake Amazon S3
  • Tabel BigLake Cloud Storage

Metadata tersebut mencakup nama file, informasi partisi, dan metadata untuk file seperti jumlah baris. Anda dapat memilih apakah akan mengaktifkan cache metadata pada tabel atau tidak. Kueri yang memiliki jumlah file besar dan dengan filter partisi Hive akan mendapatkan manfaat terbesar dari penyimpanan metadata.

Jika Anda tidak mengaktifkan penyimpanan metadata ke cache, kueri pada tabel harus membaca sumber data eksternal untuk mendapatkan metadata objek. Membaca data ini akan meningkatkan latensi kueri; membuat daftar jutaan file dari sumber data eksternal dapat memerlukan waktu beberapa menit. Jika Anda mengaktifkan penyimpanan metadata ke cache, kueri dapat menghindari pembuatan listingan file dari sumber data eksternal dan dapat mempartisi serta memangkas file dengan lebih cepat.

Anda dapat mengaktifkan caching metadata di BigLake atau tabel objek saat membuat tabel. Untuk mengetahui informasi lebih lanjut mengenai pembuatan tabel objek, lihat Membuat tabel objek Cloud Storage. Untuk mengetahui informasi selengkapnya tentang cara membuat tabel BigLake, lihat salah satu topik berikut:

Setelan caching metadata

Ada dua properti yang mengontrol perilaku fitur ini:

  • Keusangan maksimum menentukan kapan kueri menggunakan metadata yang disimpan dalam cache.
  • Mode cache metadata menentukan cara metadata dikumpulkan.

Saat mengaktifkan caching metadata, Anda dapat menentukan interval maksimum keusangan metadata yang dapat diterima untuk operasi terhadap tabel. Misalnya, jika Anda menentukan interval 1 jam, operasi terhadap tabel akan menggunakan metadata yang disimpan dalam cache jika telah diperbarui dalam satu jam terakhir. Jika metadata yang di-cache lebih lama dari itu, operasi akan kembali mengambil metadata dari datastore (Amazon S3 atau Cloud Storage). Anda dapat menentukan interval penghentian antara 30 menit dan 7 hari.

Anda dapat memilih untuk memuat ulang cache secara otomatis atau manual:

  • Untuk pemuatan ulang otomatis, cache dimuat ulang pada interval yang ditentukan sistem, biasanya antara 30 dan 60 menit. Memuat ulang cache secara otomatis merupakan pendekatan yang baik jika file di datastore ditambahkan, dihapus, atau diubah secara acak. Jika Anda perlu mengontrol waktu pemuatan ulang, misalnya untuk memicu pemuatan ulang di akhir tugas pemuatan transformasi ekstrak, gunakan pemuatan ulang manual.
  • Untuk pemuatan ulang manual, Anda akan menjalankan prosedur sistem BQ.REFRESH_EXTERNAL_METADATA_CACHE untuk memuat ulang cache metadata pada jadwal apa pun yang Anda tentukan. Untuk tabel BigLake, Anda dapat memuat ulang metadata secara selektif dengan menyediakan subdirektori dari direktori data tabel. Dengan demikian, Anda dapat menghindari pemrosesan metadata yang tidak perlu. Memuat ulang cache secara manual merupakan pendekatan yang baik jika file di datastore ditambahkan, dihapus, atau diubah pada interval yang diketahui, misalnya sebagai output pipeline.

Pembaruan cache manual dan otomatis dijalankan dengan prioritas kueri INTERACTIVE.

Jika Anda memilih untuk menggunakan pembaruan otomatis, sebaiknya buat pemesanan, lalu buat tugas dengan jenis tugas BACKGROUND untuk project yang menjalankan tugas pembaruan cache metadata. Hal ini mencegah tugas pembaruan bersaing dengan kueri pengguna untuk resource, dan berpotensi gagal jika tidak tersedia resource yang memadai.

Anda harus mempertimbangkan bagaimana nilai interval keusangan dan mode caching metadata akan berinteraksi sebelum menetapkannya. Perhatikan contoh berikut:

  • Jika cache metadata tabel disetel agar memerlukan pembaruan manual, dan interval keusangan ditetapkan ke 2 hari, Anda harus menjalankan prosedur sistem BQ.REFRESH_EXTERNAL_METADATA_CACHE setiap 2 hari atau kurang jika Anda menginginkan operasi terhadap tabel untuk menggunakan metadata yang disimpan dalam cache.
  • Jika cache metadata tabel disetel untuk dimuat ulang secara otomatis, dan interval masa kedaluwarsa ditetapkan ke 30 menit, beberapa operasi pada tabel mungkin akan membaca dari datastore jika pembaruan cache metadata memerlukan waktu yang lebih lama dari periode 30 hingga 60 menit yang biasa.

Untuk mengetahui informasi selengkapnya tentang cara menyetel opsi caching metadata untuk tabel BigLake, lihat Membuat tabel BigLake Amazon S3 atau Membuat tabel BigLake Cloud Storage.

Untuk mengetahui informasi selengkapnya tentang cara menyetel opsi caching metadata untuk tabel objek, lihat Membuat tabel objek.

Mendapatkan informasi tentang tugas pembaruan cache metadata

Untuk menemukan informasi tentang tugas pembaruan cache metadata, buat kueri tampilan INFORMATION_SCHEMA.JOBS, seperti yang ditunjukkan dalam contoh berikut:

SELECT *
FROM `region-us.INFORMATION_SCHEMA.JOBS`
WHERE job_id LIKE '%metadata_cache_refresh%'
AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 6 HOUR)
ORDER BY start_time DESC
LIMIT 10;

Menggunakan kunci enkripsi yang dikelola pelanggan dengan metadata yang disimpan dalam cache

Metadata yang disimpan dalam cache dilindungi oleh kunci enkripsi yang dikelola pelanggan (CMEK) yang digunakan untuk tabel yang terkait dengan metadata yang disimpan dalam cache. CMEK di sini bisa berupa CMEK yang diterapkan langsung ke tabel, atau CMEK yang diwarisi tabel dari set data atau project.

Jika CMEK default ditetapkan untuk project atau set data, atau jika CMEK yang ada untuk project atau set data diubah, tidak akan memengaruhi tabel yang sudah ada atau metadata yang disimpan dalam data dari project atau set data tersebut. Anda harus mengubah kunci tabel untuk menerapkan kunci baru ke tabel dan metadatanya yang disimpan dalam cache.

CMEK yang dibuat di BigQuery tidak berlaku untuk file Cloud Storage yang digunakan oleh BigLake dan tabel objek. Untuk mendapatkan enkripsi CMEK menyeluruh, konfigurasikan CMEK di Cloud Storage untuk file tersebut.

Mendapatkan informasi tentang penggunaan cache metadata berdasarkan tugas kueri

Untuk mendapatkan informasi tentang penggunaan cache metadata untuk tugas kueri, panggil metode jobs.get untuk tugas tersebut dan lihat kolom MetadataCacheStatistics di bagian JobStatistics2 pada resource Job. Kolom ini memberikan informasi tentang tabel metadata yang mendukung cache yang digunakan oleh kueri, entah cache metadatanya digunakan oleh kueri, dan jika tidak, alasan dari tidak digunakannya.

Statistik tabel

Untuk tabel BigLake yang didasarkan pada file Parquet, statistik tabel dikumpulkan saat cache metadata diperbarui. Pengumpulan statistik tabel terjadi selama pembaruan otomatis dan manual, dan statistik disimpan untuk periode yang sama dengan cache metadata.

Statistik tabel yang dikumpulkan mencakup informasi file seperti jumlah baris, ukuran file fisik dan yang tidak dikompresi, serta kardinalitas kolom. Saat Anda menjalankan kueri pada tabel BigLake berbasis Parquet, statistik ini akan diberikan ke pengoptimal kueri untuk memungkinkan perencanaan kueri yang lebih baik dan berpotensi meningkatkan performa kueri untuk beberapa jenis kueri. Misalnya, pengoptimalan kueri yang umum adalah penerapan batasan dinamis, dengan pengoptimal kueri secara dinamis menyimpulkan predikat pada tabel fakta yang lebih besar dalam gabungan dari tabel dimensi yang lebih kecil. Meskipun pengoptimalan ini dapat mempercepat kueri dengan menggunakan skema tabel yang dinormalisasi, namun pengoptimalan ini memerlukan statistik tabel yang akurat. Statistik tabel yang dikumpulkan oleh caching metadata memungkinkan pengoptimalan rencana kueri yang lebih baik di BigQuery dan Apache Spark.

Batasan

Batasan berikut berlaku untuk cache metadata:

  • Jika Anda melakukan beberapa pemuatan ulang manual secara serentak, hanya satu yang akan berhasil.
  • Cache metadata akan habis masa berlakunya setelah 7 hari jika tidak diperbarui.
  • Jika Anda memperbarui URI sumber untuk tabel, cache metadata tidak akan diperbarui secara otomatis, dan kueri berikutnya akan menampilkan data dari cache yang sudah tidak berlaku. Untuk menghindarinya, perbarui cache metadata secara manual. Jika cache metadata tabel disetel untuk diperbarui secara otomatis, Anda harus mengubah mode pembaruan tabel ke manual, melakukan pembaruan secara manual, lalu menyetel kembali mode pembaruan tabel ke otomatis lagi.
  • Jika Anda memperbarui cache metadata secara manual, dan set data target serta bucket Cloud Storage berada dalam lokasi regional Anda, Anda harus secara eksplisit menetapkan lokasi ini saat menjalankan panggilan prosedur BQ.REFRESH_EXTERNAL_METADATA_CACHE. Anda dapat melakukannya dengan salah satu cara berikut:

    Konsol

    1. Buka halaman BigQuery.

      Buka BigQuery

    2. Pilih tab di Editor.

    3. Klik More, lalu klik Query settings.

    4. Di bagian Advanced options, batalkan pilihan pada kotak Automatic location selection, lalu tentukan region target.

    5. Klik Save.

    6. Jalankan kueri yang berisi panggilan prosedur BQ.REFRESH_EXTERNAL_METADATA_CACHE di tab Editor tersebut.

    bq

    Jika Anda menjalankan kueri yang berisi panggilan prosedur BQ.REFRESH_EXTERNAL_METADATA_CACHE dengan menggunakan bq query, pastikan untuk mencantumkan flag --location.

Langkah selanjutnya