Caching Metadata

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

Tabel objek dan beberapa jenis tabel BigLake dapat menyimpan informasi metadata tentang file dalam datastore eksternal—misalnya, Cloud Storage. Jenis tabel BigLake berikut mendukung caching metadata:

  • Tabel BigLake Amazon S3
  • Tabel BigLake Cloud Storage
Metadata tersebut mencakup nama file, informasi partisi, dan metadata fisik dari file seperti jumlah baris. Anda dapat memilih apakah akan mengaktifkan caching metadata di tabel atau tidak. Kueri dengan jumlah file yang besar dan filter partisi Hive akan mendapatkan manfaat terbesar dari caching metadata.

Jika Anda tidak mengaktifkan caching metadata, 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 memakan waktu beberapa menit. Jika Anda mengaktifkan caching metadata, kueri dapat menghindari pencantuman file dari sumber data eksternal serta dapat mempartisi dan memangkas file dengan lebih cepat.

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

Setelan caching metadata

Ada dua properti yang mengontrol 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 disimpan dalam cache lebih lama dari itu, operasi akan kembali untuk mengambil metadata dari datastore (Amazon S3 atau Cloud Storage). Anda dapat menentukan interval keusangan 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 sesuai jadwal yang memenuhi persyaratan Anda. Untuk tabel BigLake, Anda dapat memuat ulang metadata secara selektif dengan menyediakan subdirektori direktori data tabel. Hal ini memungkinkan Anda 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.

    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.

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 Anda memuat ulang cache metadata secara manual untuk sebuah tabel, dan menetapkan interval usang menjadi 2 hari, Anda harus menjalankan prosedur sistem BQ.REFRESH_EXTERNAL_METADATA_CACHE setiap 2 hari atau kurang jika menginginkan operasi terhadap tabel agar menggunakan metadata yang disimpan dalam cache.
  • Jika Anda memuat ulang cache metadata secara otomatis untuk sebuah tabel, dan menetapkan interval keusangan ke 30 menit, beberapa operasi terhadap tabel mungkin akan membaca dari datastore jika pembaruan cache metadata dilakukan sisi yang lebih panjang dari jendela 30 hingga 60 menit seperti biasanya.

Mendapatkan informasi tentang tugas pembaruan cache metadata

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

SELECT *
FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT`
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