Memecahkan masalah pengelolaan workload BigQuery
Dokumen ini menunjukkan cara memecahkan masalah umum terkait pengelolaan workload BigQuery, termasuk alokasi dan tugas pemesanan, error konfigurasi pemesanan, komitmen kapasitas, persaingan slot, dan pemantauan pemesanan.
Untuk melihat dan mengelola pemesanan, komitmen, dan diagram resource administratif, pastikan Anda memiliki peran Pengelolaan Akses dan Identitas (IAM) yang diperlukan, seperti peran BigQuery Resource Viewer (roles/bigquery.resourceViewer) atau BigQuery Resource Admin (roles/bigquery.resourceAdmin) di project administrasi. Untuk mengetahui informasi selengkapnya, lihat Kontrol akses dengan IAM.
Memecahkan masalah terkait pemesanan
Gunakan informasi berikut untuk memecahkan masalah umum terkait pemesanan, seperti error saat menambahkan slot, alasan pemesanan tidak digunakan untuk tugas BigQuery, atau pemesanan yang tidak dikenali.
Tidak dapat menambahkan lebih banyak slot ke ukuran reservasi
Jika Anda mengalami error seperti Failed to allocate slots for reservation in the
current system state atau Failed to update reservation: Failed to allocate slots
for reservation saat mencoba menambahkan slot ke reservasi, biasanya ini adalah masalah sementara. Untuk mengurangi masalah ini, lakukan langkah berikut:
- Coba lagi dengan jumlah slot yang lebih kecil.
- Jika mencoba dengan jumlah slot yang lebih kecil gagal, tunggu 15 menit dan coba lagi operasi.
Jika setelah mencoba lagi beberapa kali dan menunggu selama 30 menit Anda masih menerima error yang sama, hubungi Cloud Customer Care.
Kuota tidak cukup untuk menyelesaikan permintaan ini
Jika pesan error menampilkan There is insufficient quota to complete this
request, permintaan melebihi batas kuota yang ditetapkan untuk project.
Untuk mengatasi error ini, lakukan salah satu tindakan berikut:
- Tambahkan jumlah slot yang lebih kecil ke reservasi agar permintaan tidak melebihi batas kuota.
- Minta penambahan kuota di region yang sesuai. Untuk mengetahui informasi selengkapnya, lihat Meminta penambahan kuota.
Reservasi tidak digunakan oleh BigQuery untuk menjalankan tugas
Ada beberapa skenario saat tugas dapat berjalan menggunakan harga sesuai permintaan atau kumpulan slot bersama gratis, bukan menggunakan reservasi yang Anda buat.
Kueri dan reservasi berada di region yang berbeda
Reservasi adalah resource regional. Kueri berjalan di lokasi yang sama dengan tabel yang direferensikan dalam kueri.
Jika lokasi tabel tidak cocok dengan lokasi reservasi, kueri tidak menggunakan reservasi dan dijalankan menggunakan harga sesuai permintaan (atau gabungan slot bersama gratis untuk tugas pemuatan dan ekspor batch yang memenuhi syarat).
Membuat kueri tabel BigQuery Omni
Saat membuat kueri tabel BigQuery Omni, pastikan Anda membuat reservasi di region yang sama dengan tabel, bukan di region yang sama lokasinya. Jika Anda membuat reservasi di region BigQuery yang ditempatkan bersama, kueri dijalankan menggunakan harga sesuai permintaan.
Reservasi telah dibuat, tetapi project belum ditetapkan ke reservasi tersebut
Untuk menggunakan slot dalam pemesanan, Anda harus membuat penetapan yang menetapkan project, folder, atau organisasi ke pemesanan tertentu. Pastikan project memiliki penetapan yang sesuai untuk reservasi.
Jenis pekerjaan tidak cocok
Pastikan untuk memilih jenis pekerjaan yang benar saat membuat penetapan; jika tidak, tugas tidak akan menggunakan reservasi.
Misalnya, jika Anda memilih PIPELINE sebagai jenis pekerjaan, semua tugas kueri akan dijalankan menggunakan harga on-demand. Ubah jenis penetapan menjadi QUERY agar tugas kueri
dapat berjalan menggunakan reservasi.
Kueri multi-pernyataan
Jika Anda menjalankan kueri multi-pernyataan, objek tugas induk tidak memiliki reservasi yang terkait dengannya, meskipun tugas turunan berjalan di bawah reservasi.
Untuk mengonfirmasi apakah tugas benar-benar menggunakan reservasi, periksa metadata tugas turunan.
Mengambil hasil yang di-cache
Saat tugas kueri mengambil hasil yang di-cache, kolom reservasi kosong karena BigQuery tidak melakukan komputasi dan mengambil hasil langsung dari tabel sementara.
Operasi modifikasi baris pengambilan data perubahan
Jika Anda memiliki
tabel pengambilan data perubahan (CDC),
BigQuery akan menerapkan modifikasi baris tertunda dalam
interval max_staleness sebagai tugas latar belakang yang menggunakan jenis
penetapan BACKGROUND. Jika tidak ada penetapan BACKGROUND, tugas ini menggunakan harga
on-demand. Pertimbangkan untuk membuat penetapan BACKGROUND untuk project guna menghindari biaya on-demand yang tidak terduga. Anda dapat mengidentifikasi tugas ini dengan substring
queueworker_cdc_background_merge_coalesce dalam ID tugas.
Jenis model BigQuery ML yang menggunakan layanan eksternal
Jika tidak ada penetapan reservasi dengan jenis pekerjaan ML_EXTERNAL yang ditemukan di project, tugas pembuatan model eksternal akan dijalankan menggunakan harga on-demand. Penetapan jenis tugas QUERY berlaku untuk model BigQuery ML standar dan model faktorisasi matriks (yang memerlukan pemesanan edisi Enterprise atau Enterprise Plus), sedangkan model eksternal memerlukan penetapan ML_EXTERNAL. Untuk mengetahui informasi selengkapnya, lihat Menetapkan slot ke workload BigQuery.
Pemesanan yang tidak dikenal teridentifikasi dalam project
BigQuery memiliki reservasi yang merepresentasikan kumpulan slot bersama gratis untuk operasi tertentu di BigQuery.
default-pipeline
Secara default, pemuatan batch atau ekspor batch data di BigQuery
menggunakan kumpulan slot bersama gratis. Saat Anda memeriksa tugas pemuatan atau ekstraksi ini, kolom
reservasi akan menampilkan default-pipeline.
Penggunaan gabungan slot bersama tidak dikenai biaya. Jika Anda menginginkan performa yang konsisten dan dapat diprediksi, pertimbangkan untuk membeli reservasi PIPELINE.
Memecahkan masalah tugas pengelolaan pemesanan
Anda mungkin mengalami error berikut saat membuat atau memperbarui reservasi.
Ukuran reservasi atau slot dasar pengukuran harus kelipatan 50
Pesan error
Max reservation size can only be configured in multiples of 50, except when covered by excess commitments.Baseline slots can only be configured in multiples of 50, except when covered by excess commitments.
Penyebab
Slot selalu diskalakan otomatis ke kelipatan 50. BigQuery menskalakan slot berdasarkan penggunaan aktual dan membulatkan ke kenaikan 50 slot terdekat. Jika tidak ada komitmen atau jika komitmen tidak dapat mencakup peningkatan, Anda hanya dapat meningkatkan slot dasar pengukuran dan penskalaan otomatis dalam kelipatan 50.
Jika baseline slots atau max reservation size - baseline slots bukan kelipatan
50 (dan tidak tercakup oleh komitmen kapasitas berlebih), maka reservasi
tidak dapat ditingkatkan skalanya ke ukuran reservasi maksimum, sehingga menyebabkan error ini.
Resolusi
Lakukan salah satu hal berikut:
- Beli lebih banyak komitmen kapasitas untuk mencakup peningkatan slot.
- Pilih slot dasar pengukuran dan maksimum yang merupakan kelipatan 50.
Memecahkan masalah komitmen kapasitas
Bagian ini menjelaskan langkah-langkah pemecahan masalah yang mungkin berguna jika Anda mengalami masalah dengan komitmen kapasitas BigQuery.
Slot yang dibeli sedang menunggu
Slot dapat berubah tergantung kapasitas yang tersedia. Saat Anda membeli komitmen slot dan BigQuery mengalokasikannya, kolom Status akan menampilkan tanda centang. Jika BigQuery tidak dapat langsung mengalokasikan slot yang diminta, kolom Status akan tetap tertunda. Anda mungkin harus menunggu beberapa jam hingga slot tersedia. Jika memerlukan akses ke slot lebih cepat, coba langkah berikut:
- Hapus komitmen yang tertunda.
- Beli komitmen baru untuk jumlah slot yang lebih kecil. Tergantung kapasitas yang tersedia, komitmen yang lebih kecil dapat langsung aktif.
- Beli sisa slot sebagai komitmen terpisah. Slot ini mungkin akan ditampilkan sebagai tertunda di kolom Status, tetapi umumnya akan aktif dalam beberapa jam.
- Opsional: Saat kedua komitmen menjadi aktif, gabungkan keduanya menjadi satu komitmen, asalkan kedua komitmen berada di wilayah dan edisi yang sama serta memiliki paket komitmen yang sama.
Jika komitmen slot gagal atau memerlukan waktu lama untuk selesai, pertimbangkan untuk menggunakan
harga on demand
untuk sementara. Dengan solusi ini, Anda dapat menjalankan kueri penting di project lain yang tidak ditetapkan ke pemesanan apa pun, menetapkan project ke None, atau menghapus penetapan project tersebut.
Memecahkan masalah persaingan slot
Persaingan slot dapat terjadi jika tidak ada cukup slot untuk menjalankan semua tugas Anda, sehingga menyebabkan masalah performa. Untuk menganalisis apakah penurunan performa berasal dari peningkatan workload atau perubahan konfigurasi lingkungan, Anda dapat membandingkan dua interval sistem di seluruh reservasi dan project.
Untuk memecahkan masalah perebutan slot, gunakan langkah-langkah dan praktik terbaik berikut.
Jika Anda telah mencoba praktik terbaik ini, tetapi masih mengalami masalah performa tugas, Anda dapat meminta dukungan.
Lonjakan konkurensi tugas
Gunakan tampilan mendetail di diagram resource administratif untuk memeriksa lonjakan tiba-tiba dalam menjalankan tugas dengan lonjakan penggunaan slot secara bersamaan. Lonjakan ini dapat menunjukkan bahwa terlalu banyak tugas yang bersaing untuk mendapatkan slot yang tersedia dalam reservasi Anda.
Praktik terbaik: Pertimbangkan untuk mengoptimalkan kueri yang menggunakan banyak resource atau meningkatkan kapasitas slot reservasi Anda. Untuk mengetahui informasi selengkapnya tentang pengoptimalan performa kueri, lihat Mengoptimalkan komputasi kueri.
Penggunaan slot tinggi
Gunakan tampilan detail untuk memeriksa peningkatan durasi tugas, terutama jika ada tugas yang melebihi kapasitas maksimum reservasi Anda. Penggunaan slot yang tinggi secara konsisten dapat menunjukkan persaingan slot yang sedang berlangsung.
Praktik terbaik: Periksa kueri menggunakan filter persaingan slot penjelajah tugas untuk mengidentifikasi kueri yang menggunakan slot terbanyak dan mengoptimalkannya.
Durasi tugas yang panjang
Jika tugas memerlukan waktu yang jauh lebih lama untuk diselesaikan, periksa tampilan detail. Lonjakan konkurensi tugas dan penggunaan slot yang tinggi dapat menunjukkan pertentangan slot.
Praktik terbaik: Pisahkan tugas penting dengan menjeda sementara tugas yang kurang penting atau mengurangi keseluruhan rasio pengiriman tugas.
Pesan persaingan slot
Tabel insight dapat menampilkan pesan seperti There were NUMBER jobs detected with
slot_contention in the reservation. yang menunjukkan masalah pertentangan slot.
Periksa penjelajah tugas untuk meninjau detail tentang tugas tertentu yang ditandai dalam pesan ini.
Praktik terbaik: Optimalkan kueri yang diidentifikasi atau sesuaikan alokasi slot reservasi Anda.
Memecahkan masalah pemantauan pemesanan
Bagian berikut menjelaskan cara menyelesaikan masalah umum saat memantau penggunaan slot dan reservasi BigQuery.
Metrik penggunaan slot tidak cocok INFORMATION_SCHEMA
Jika Anda menemukan perbedaan antara metrik penggunaan slot dalam diagram resource dan data INFORMATION_SCHEMA, coba langkah berikut:
- Mengurangi perincian. Ubah perincian diagram menjadi interval 1 detik, bukan interval 1 jam.
- Menyelaraskan agregasi. Pastikan Anda menggunakan metode agregasi yang
selaras antara diagram resource dan data
INFORMATION_SCHEMA. Misalnya, untuk mencerminkan penggunaan puncak dalam diagram resource dengan lebih baik, ubah agregasi metrik menjadi p99 atau p90 secara konsisten.
Slot yang dipinjam akan muncul saat slot tidak aktif dinonaktifkan
Diagram pemantauan Anda mungkin menampilkan nilai bukan nol untuk borrowed_slots meskipun
ignore_idle_slots=true ditetapkan untuk satu atau beberapa reservasi. Setelan ini
mencegah pemesanan meminjam slot tidak ada aktivitas, tetapi tidak mencegahnya
meminjamkan slot yang tidak digunakan ke pemesanan lain.
Slot yang dipinjam ini muncul dalam kasus berikut:
Meminjamkan ke pemesanan lain. Reservasi dengan
ignore_idle_slots=truedapat meminjamkan slot dasar pengukuran yang tidak digunakan ke reservasi lain dalam project administrasi, region, dan edisi yang sama yang mengizinkan peminjaman slot tidak ada aktivitas (ignore_idle_slots=false). Jika semua reservasi dalam project administrasi, region, dan edisi memilikiignore_idle_slots=true, slot tidak ada aktivitas tidak akan dibagikan di antara reservasi tersebut.Misalnya, anggaplah Pemesanan A memiliki 100 slot, 0 penggunaan, dan dikonfigurasi dengan
ignore_idle_slots=true. Pemesanan B berada di project administrasi, region, dan edisi yang sama, memiliki 100 slot, memerlukan 150 slot untuk workload-nya, dan dikonfigurasi denganignore_idle_slots=false. Reservasi B dapat meminjam 50 slot tidak ada aktivitas dari Reservasi A untuk memenuhi kebutuhannya. Jika hal ini terjadi, diagram pemantauan akan melaporkan 50lent_slotsuntuk Reservasi A dan 50borrowed_slotsuntuk Reservasi B.Penggunaan melebihi kapasitas. Jika penggunaan slot reservasi untuk sementara melebihi kapasitasnya (slot dasar + slot yang diskalakan otomatis), diagram pemantauan akan menunjukkan perbedaan ini sebagai
borrowed_slots. Perilaku ini dapat terjadi bahkan untuk pemesanan denganignore_idle_slots=true.
Penggunaan slot terkadang dapat melebihi jumlah slot dasar pengukuran ditambah slot yang diskalakan. Anda tidak akan ditagih untuk penggunaan slot yang lebih besar dari slot dasar ditambah slot yang diskalakan.
Slot yang dipinjam muncul sebelum reservasi digunakan sepenuhnya
Dasbor pemantauan menggunakan data sampel, yang mungkin tidak mencerminkan secara akurat waktu penggunaan slot yang tepat dalam interval pengambilan sampel.
Untuk analisis penggunaan slot yang lebih akurat, buat kueri kolom yang terkait dengan slot tidak aktif, seperti kolom borrowed_slots dan lent_slots dalam tampilan INFORMATION_SCHEMA.RESERVATIONS_TIMELINE.
Langkah berikutnya
- Pelajari lebih lanjut pengelolaan workload menggunakan reservasi.
- Pelajari cara mengelola pemesanan workload.
- Pelajari cara membeli dan mengelola komitmen slot.
- Pelajari cara memantau pemesanan dan menggunakan diagram resource administratif.
- Jelajahi referensi pemecahan masalah BigQuery lainnya.