Pengindeksan metadata untuk tabel BigQuery
Dokumen ini menjelaskan pengindeksan metadata kolom di BigQuery dan menjelaskan cara mengalokasikan resource khusus untuk meningkatkan keaktualan indeks dan performa kueri.
BigQuery secara otomatis mengindeks metadata untuk tabel BigQuery yang melebihi 1 GiB. Metadata ini mencakup lokasi file, informasi partisi, dan atribut tingkat kolom, yang digunakan BigQuery untuk mengoptimalkan dan mempercepat kueri Anda.
Secara default, pengindeksan metadata di BigQuery adalah operasi latar belakang gratis dan tidak memerlukan tindakan apa pun dari Anda. Namun, keaktualan indeks
bergantung pada resource gratis yang tersedia dan tidak memiliki
tujuan tingkat layanan (SLO) performa. Jika keaktualan indeks sangat penting untuk
kasus penggunaan Anda, sebaiknya konfigurasikan
reservasi BACKGROUND
.
Melihat waktu pembaruan indeks metadata
Untuk melihat waktu pembaruan indeks metadata terakhir dari tabel, buat kueri kolom LAST_METADATA_INDEX_REFRESH_TIME
dari tampilan INFORMATION_SCHEMA.TABLE_STORAGE
.
Untuk melakukannya, lakukan hal berikut:
Di Trusted Cloud konsol, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
SELECT project_id, project_number, table_name, last_metadata_index_refresh_time FROM [
PROJECT_ID
.]region-REGION
.INFORMATION_SCHEMA.TABLE_STORAGE;Ganti kode berikut:
PROJECT_ID
: ID Trusted Cloud by S3NS project Anda. Jika tidak ditentukan, project default akan digunakan.REGION
: region tempat project berada—misalnya,region-us
.
Klik
Run.
Melihat penggunaan indeks metadata kolom
Untuk melihat apakah indeks metadata kolom digunakan setelah tugas selesai, periksa
properti TableMetadataCacheUsage
dari resource Tugas. Jika kolom unusedReason
kosong (tidak diisi), indeks metadata kolom akan digunakan. Jika diisi, kolom explanation
yang menyertainya akan memberikan alasan mengapa indeks metadata kolom tidak digunakan.
Anda juga dapat melihat penggunaan indeks metadata kolom dengan
kolom metadata_cache_statistics
di
tampilan INFORMATION_SCHEMA.JOBS
.
Misalnya, berikut ini menampilkan penggunaan indeks metadata kolom untuk tugas my-job
:
SELECT metadata_cache_statistics FROM `region-US`.INFORMATION_SCHEMA.JOBS WHERE job_id = 'my-job';
Sebagai contoh lain, berikut ini menampilkan jumlah tugas yang menggunakan indeks metadata kolom untuk tabel my-table
:
SELECT COUNT(*) FROM `region-US`.INFORMATION_SCHEMA.JOBS, UNNEST(metadata_cache_statistics.table_metadata_cache_usage) AS stats WHERE stats.table_reference.table_id='my-table' AND stats.table_reference.dataset_id='my-dataset' AND stats.table_reference.project_id='my-project' AND stats.unusedReason IS NULL;
Menyiapkan resource pengindeksan khusus
Untuk menyiapkan resource guna memperbarui pengindeksan metadata dalam project, Anda harus memiliki reservasi yang ditetapkan ke project terlebih dahulu. Untuk melakukannya, lakukan hal berikut:
Setelah menyiapkan pemesanan, pilih salah satu metode berikut untuk menetapkan slot ke tugas pengindeksan metadata Anda. Secara default, slot yang Anda alokasikan dengan cara ini dibagikan ke tugas lain jika slot tidak ada aktivitas. Untuk informasi selengkapnya, lihat Slot tidak ada aktivitas.
Konsol
Di Trusted Cloud console, buka halaman Capacity Management.
Klik > Buat penetapan.
Tindakan reservasiPilih project reservasi Anda.
Tetapkan Jenis Tugas ke Latar Belakang.
Klik Buat.
bq
Gunakan
perintah bq mk
.
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment \ --reservation_id=RESERVATION_NAME \ --assignee_id=PROJECT_ID \ --job_type=BACKGROUND \ --assignee_type=PROJECT
Ganti kode berikut:
ADMIN_PROJECT_ID
: project ID dari project administrasi yang memiliki resource pemesanan.LOCATION
: lokasi pemesanan.RESERVATION_NAME
: nama pemesanan.PROJECT_ID
: project ID yang akan ditetapkan ke pemesanan ini.
SQL
Untuk menetapkan pemesanan ke project, gunakan
pernyataan DDL CREATE ASSIGNMENT
.
Di Trusted Cloud konsol, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
Ganti kode berikut:CREATE ASSIGNMENT ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID OPTIONS ( assignee = 'projects/PROJECT_ID', job_type = 'BACKGROUND');
ADMIN_PROJECT_ID
: project ID dari project administrasi yang memiliki resource pemesanan.LOCATION
: lokasi pemesanan.RESERVATION_NAME
: nama pemesanan.ASSIGNMENT_ID
: ID tugas. ID harus unik untuk project dan lokasi, diawali dan diakhiri dengan huruf kecil atau angka, serta hanya berisi huruf kecil, angka, dan tanda hubung.PROJECT_ID
: project ID yang berisi tabel. Project ini ditetapkan ke pemesanan.
Klik
Run.
Melihat informasi tugas pengindeksan
Setelah menyiapkan tugas pengindeksan khusus, Anda dapat melihat informasi tentang tugas pengindeksan dengan tampilan JOBS
.
Contoh SQL berikut menunjukkan lima tugas pembaruan terbaru di
PROJECT_NAME.
SELECT * FROM region-us.INFORMATION_SCHEMA.JOBS WHERE project_id = 'PROJECT_NAME' AND SEARCH(job_id, '`metadata_cache_refresh`') ORDER BY creation_time DESC LIMIT 5;
Ganti PROJECT_NAME
dengan nama project yang berisi tugas pengindeksan metadata Anda.
Mengonfigurasi pemberitahuan pengindeksan metadata
Proses pemberitahuan Cloud Monitoring akan memberi tahu Anda saat performa BigQuery tidak memenuhi kriteria yang ditentukan. Untuk informasi selengkapnya, lihat Ringkasan pemberitahuan. Dengan pengindeksan metadata, Anda dapat mengonfigurasi pemberitahuan untuk penggunaan dan keusangan slot.
Pemberitahuan penggunaan slot
Pemberitahuan ini memberi tahu Anda saat reservasi latar belakang melebihi persentase alokasi yang ditentukan. Nilai defaultnya adalah 95%. Anda dapat mengonfigurasi pemberitahuan ini untuk pemesanan tertentu atau untuk setiap pemesanan latar belakang. Saat pemberitahuan ini terpicu, sebaiknya Anda meningkatkan ukuran reservasi.
Untuk mengonfigurasi pemberitahuan ini untuk setiap reservasi latar belakang, lakukan hal berikut:
- Siapkan Saluran notifikasi pemantauan jika Anda belum melakukannya.
Buka halaman Integrations.
Temukan integrasi BigQuery, lalu klik Lihat detail.
Di tab Alerts, pilih Slot Usage - Background Metadata Cache Slot Usage Too High.
Opsional: Untuk menyesuaikan pemberitahuan ini lebih lanjut, klik Tampilkan opsi > Sesuaikan kebijakan pemberitahuan.
Untuk Konfigurasikan notifikasi, pilih saluran notifikasi Anda.
Klik Buat.
Notifikasi keusangan
Notifikasi ini memberi tahu Anda saat keusangan indeks metadata kolom rata-rata meningkat terlalu banyak dibandingkan dengan rata-rata yang ada. Ambang batas default adalah jika rata-rata selama 4 jam lebih dari dua kali lipat rata-rata sebelumnya selama lebih dari 30 menit. Saat pemberitahuan ini dipicu, sebaiknya Anda meningkatkan ukuran reservasi atau membuat reservasi latar belakang jika tidak memilikinya.
Untuk mengonfigurasi pemberitahuan ini, lakukan hal berikut:
- Siapkan Saluran notifikasi pemantauan jika Anda belum melakukannya.
Buka halaman Integrations.
Temukan integrasi BigQuery, lalu klik Lihat detail.
Di tab Notifikasi, pilih Kolom Metadata Index Staleness - Too Much Percent Increase.
Opsional: Untuk menyesuaikan pemberitahuan ini lebih lanjut, klik Tampilkan opsi > Sesuaikan kebijakan pemberitahuan.
Untuk Konfigurasikan notifikasi, pilih saluran notifikasi Anda.
Klik Buat.
Batasan
Peningkatan performa kueri metadata hanya berlaku untuk pernyataan SELECT
, INSERT
, dan
CREATE TABLE AS SELECT
. Pernyataan bahasa manipulasi data (DML)
tidak akan mengalami peningkatan dari pengindeksan metadata.
Langkah berikutnya
- Pelajari cara melihat semua tugas dalam project Anda dengan tampilan
JOBS
. - Pelajari cara melihat kapasitas dan penggunaan slot.