Memecahkan masalah error kuota dan batas

BigQuery memiliki berbagai kuota dan batas yang membatasi tarif serta volume permintaan dan operasi yang berbeda. Keduanya dibuat untuk melindungi infrastruktur dan membantu melindungi dari penggunaan pelanggan yang tidak terduga. Dokumen ini menjelaskan cara mendiagnosis dan memitigasi error tertentu yang dihasilkan dari kuota dan batas.

Jika pesan error Anda tidak tercantum dalam dokumen ini, lihat daftar pesan error yang memiliki informasi error yang lebih umum.

Ringkasan

Jika operasi BigQuery gagal karena melebihi kuota, API akan menampilkan kode status HTTP 403 Forbidden. Isi respons berisi informasi selengkapnya tentang kuota yang telah tercapai. Isi respons terlihat mirip dengan berikut ini:

{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Quota exceeded: ...",
    "reason" : "quotaExceeded"
  } ],
  "message" : "Quota exceeded: ..."
}

Kolom message dalam payload menjelaskan batas mana yang terlampaui. Misalnya, kolom message mungkin bertuliskan Exceeded rate limits: too many table update operations for this table.

Secara umum, batas kuota dibagi menjadi dua kategori, yang ditunjukkan oleh kolom reason dalam payload respons.

  • rateLimitExceeded. Nilai ini menunjukkan batas jangka pendek. Untuk mengatasi masalah batas ini, coba lagi operasi ini setelah beberapa detik. Gunakan backoff eksponensial di antara upaya percobaan ulang. Artinya, meningkatkan penundaan secara eksponensial di antara setiap percobaan ulang.

  • quotaExceeded. Nilai ini menunjukkan batas jangka waktu yang lebih panjang. Jika mencapai batas kuota jangka panjang, Anda harus menunggu 10 menit atau lebih lama sebelum mencoba operasi lagi. Jika Anda secara konsisten mencapai salah satu batas kuota jangka panjang ini, Anda harus menganalisis workload untuk mencari cara memitigasi masalah. Mitigasi dapat mencakup pengoptimalan workload Anda atau meminta penambahan kuota.

Untuk error quotaExceeded, periksa pesan error guna memahami batas kuota mana yang terlampaui. Kemudian, analisis workload Anda untuk melihat apakah Anda dapat menghindari tercapainya kuota.

Dalam beberapa kasus, kuota dapat ditingkatkan dengan menghubungi dukungan BigQuery atau menghubungi bagian penjualan Google Cloud, tetapi sebaiknya Anda mencoba saran dalam dokumen ini terlebih dahulu.

Diagnosis

Untuk mendiagnosis masalah, lakukan hal berikut:

  • Gunakan tampilan INFORMATION_SCHEMA untuk menganalisis masalah yang mendasari. Tampilan ini berisi metadata tentang resource BigQuery Anda, termasuk tugas, pemesanan, dan streaming insert.

    Misalnya, kueri berikut menggunakan tampilan INFORMATION_SCHEMA.JOBS untuk mencantumkan semua error terkait kuota dalam satu hari terakhir:

    SELECT
     job_id,
     creation_time,
     error_result
    FROM `region-us`.INFORMATION_SCHEMA.JOBS
    WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY) AND
          error_result.reason IN ('rateLimitExceeded', 'quotaExceeded')
    
  • Lihat error di Cloud Audit Logs.

    Misalnya, dengan menggunakan Logs Explorer, kueri berikut menampilkan error dengan Quota exceeded atau limit dalam string pesan:

    resource.type = ("bigquery_project" OR "bigquery_dataset")
    protoPayload.status.code ="7"
    protoPayload.status.message: ("Quota exceeded" OR "limit")
    

    Dalam contoh ini, kode status 7 menunjukkan PERMISSION_DENIED, yang sesuai dengan kode status 403 HTTP.

    Untuk contoh kueri Cloud Audit Logs tambahan, lihat Kueri BigQuery.

Error batas antrean kueri

Jika project mencoba mengantrekan kueri yang lebih interaktif atau batch dari yang diizinkan batas antrean, Anda mungkin mengalami error ini.

Pesan error

Quota exceeded: Your project and region exceeded quota for
max number of jobs that can be queued per project.

Resolusi

Untuk mengatasi error kuota ini, lakukan tindakan berikut:

  • Jeda tugas. Jika Anda mengidentifikasi proses atau alur kerja yang bertanggung jawab atas peningkatan kueri, jeda proses atau alur kerja tersebut.

  • Gunakan tugas dengan prioritas batch. Anda dapat mengantrekan lebih banyak kueri batch daripada kueri interaktif.

  • Distribusikan kueri. Atur dan distribusikan muatan ke berbagai project sesuai informasi yang ditentukan oleh sifat kueri dan kebutuhan bisnis Anda.

  • Distribusikan waktu proses. Distribusikan muatan ke seluruh jangka waktu yang lebih besar. Jika solusi pelaporan Anda perlu menjalankan banyak kueri, coba perkenalkan beberapa keacakan saat kueri dimulai. Misalnya, jangan memulai semua laporan sekaligus.

  • Gunakan BigQuery BI Engine. Jika Anda mengalami error ini saat menggunakan alat business intelligence (BI) untuk membuat dasbor yang mengkueri data di BigQuery, sebaiknya Anda dapat menggunakan BigQuery BI Engine. Penggunaan BigQuery BI Engine sangat optimal untuk kasus penggunaan ini.

  • Optimalkan kueri dan model data. Sering kali, kueri dapat ditulis ulang agar berjalan lebih efisien. Misalnya, jika kueri Anda berisi klausa Ekspresi tabel umum (CTE)WITH–yang direferensikan di lebih dari satu tempat dalam kueri, komputasi ini akan dilakukan beberapa kali. Lebih baik mempertahankan penghitungan yang dilakukan oleh CTE dalam tabel sementara, lalu merujuknya dalam kueri.

    Beberapa penggabungan juga dapat menjadi sumber kurangnya efisiensi. Dalam hal ini, Anda mungkin ingin mempertimbangkan untuk menggunakan kolom bertingkat dan berulang. Penggunaan ini sering kali meningkatkan lokalitas data, menghilangkan kebutuhan untuk beberapa penggabungan, dan secara keseluruhan mengurangi penggunaan resource dan waktu proses kueri.

    Mengoptimalkan kueri akan membuatnya lebih murah, jadi saat menggunakan harga berbasis kapasitas, Anda dapat menjalankan lebih banyak kueri dengan slot. Untuk mengetahui informasi selengkapnya, lihat Pengantar pengoptimalan performa kueri.

  • Optimalkan model kueri. BigQuery bukanlah database relasional. Tidak dioptimalkan untuk kueri kecil dengan jumlah yang tak terbatas. Menjalankan kueri kecil dalam jumlah besar akan cepat menghabiskan kuota Anda. Kueri tersebut tidak berjalan seefisien jika dijalankan dengan produk database yang lebih kecil. BigQuery adalah data warehouse yang besar dan ini adalah kasus penggunaan utamanya. Ini memiliki performa terbaik dengan kueri analitis pada data dalam jumlah besar.

  • Pertahankan data (Tabel tersimpan). Lakukan pra-pemrosesan data di BigQuery dan simpan di tabel tambahan. Misalnya, jika Anda menjalankan banyak kueri serupa yang menggunakan banyak komputasi dengan kondisi WHERE yang berbeda, hasilnya tidak akan di-cache. Kueri tersebut juga menghabiskan resource setiap kali dijalankan. Anda dapat meningkatkan performa kueri tersebut dan mengurangi waktu pemrosesannya dengan melakukan pra-komputasi data dan menyimpannya dalam tabel. Data yang telah dihitung sebelumnya dalam tabel ini dapat dikueri oleh kueri SELECT. Hal ini sering dapat dilakukan selama penyerapan dalam proses ETL, atau dengan menggunakan kueri terjadwal atau tampilan terwujud.

  • Gunakan mode uji coba. Jalankan kueri dalam mode uji coba, yang memperkirakan jumlah byte yang dibaca, tetapi tidak benar-benar memproses kueri.

  • Pratinjau data tabel. Untuk bereksperimen atau menjelajahi data, bukan menjalankan kueri, lihat pratinjau data tabel dengan kemampuan pratinjau tabel BigQuery.

  • Gunakan hasil kueri yang di-cache. Semua hasil kueri, termasuk kueri batch dan interaktif, disimpan dalam cache dalam tabel sementara selama sekitar 24 jam dengan beberapa pengecualian. Meskipun menjalankan kueri yang di-cache tetap diperhitungkan terhadap batas kueri serentak Anda, kueri yang menggunakan hasil yang di-cache secara signifikan lebih cepat daripada kueri yang tidak menggunakan hasil yang di-cache karena BigQuery tidak perlu menghitung set hasil.

Error jumlah modifikasi partisi untuk kuota tabel yang dipartisi kolom

BigQuery akan menampilkan error ini jika tabel yang berpartisi kolom Anda mencapai kuota jumlah modifikasi partisi yang diizinkan per hari. Modifikasi partisi mencakup total semua tugas pemuatan, tugas penyalinan, dan tugas kueri yang menambahkan atau menimpa partisi tujuan.

Untuk melihat nilai batas Jumlah perubahan partisi per tabel berpartisi kolom per hari, lihat Tabel berpartisi.

Pesan error

Quota exceeded: Your table exceeded quota for
Number of partition modifications to a column partitioned table

Resolusi

Kuota ini tidak dapat ditingkatkan. Untuk mengatasi error kuota ini, lakukan tindakan berikut:

  • Ubah partisi pada tabel untuk memiliki lebih banyak data di setiap partisi, guna mengurangi jumlah total partisi. Misalnya, ubah dari mempartisi menurut hari ke partisi menurut bulan atau ubah cara Anda mempartisi tabel.
  • Gunakan pengelompokan, bukan membuat partisi.
  • Jika Anda sering memuat data dari beberapa file kecil yang tersimpan di Cloud Storage yang menggunakan tugas per file, gabungkan beberapa tugas pemuatan ke dalam satu tugas. Anda dapat memuat dari beberapa URI Cloud Storage dengan daftar yang dipisahkan koma (misalnya, gs://my_path/file_1,gs://my_path/file_2), atau menggunakan karakter pengganti (misalnya, gs://my_path/*).

    Untuk mengetahui informasi selengkapnya, lihat Memuat banyak data dalam batch.

  • Misalnya, jika Anda menggunakan tugas pemuatan, pilih, atau salin untuk menambahkan satu baris data ke tabel, sebaiknya pertimbangkan untuk mengelompokkan beberapa tugas ke dalam satu tugas. BigQuery tidak berperforma baik saat digunakan sebagai database relasional. Sebagai praktik terbaik, hindari menjalankan tindakan penambahan baris tunggal yang sering dilakukan.
  • Untuk menambahkan data dengan kecepatan tinggi, pertimbangkan untuk menggunakan BigQuery Storage Write API. Solusi ini direkomendasikan untuk penyerapan data berperforma tinggi. BigQuery Storage Write API memiliki fitur yang tangguh, termasuk semantik pengiriman tepat satu kali. Untuk mempelajari batas dan kuota, lihat Storage Write API dan untuk mengetahui biaya penggunaan API ini, lihat Harga penyerapan data BigQuery.
  • Untuk memantau jumlah partisi yang dimodifikasi pada tabel, gunakan tampilan INFORMATION_SCHEMA.

Error kuota streaming insert

Bagian ini memberikan beberapa tips untuk memecahkan masalah error kuota terkait streaming data ke BigQuery.

Di region tertentu, streaming insert memiliki kuota yang lebih tinggi jika Anda tidak mengisi kolom insertId untuk setiap baris. Untuk mengetahui informasi selengkapnya tentang kuota streaming insert, lihat Streaming insert. Error terkait kuota untuk streaming BigQuery bergantung pada ada atau tidaknya insertId.

Pesan error

Jika kolom insertId kosong, error kuota berikut mungkin terjadi:

Batas kuota Pesan error
Byte per detik per project Entity Anda dengan gaia_id: GAIA_ID, project: PROJECT_ID dalam region: REGION melampaui kuota untuk byte penyisipan per detik.

Jika kolom insertId terisi, error kuota berikut mungkin terjadi:

Batas kuota Pesan error
Baris per detik per project Project Anda: PROJECT_ID di REGION melampaui kuota untuk baris streaming insert per detik.
Baris per detik per tabel Tabel Anda: TABLE_ID melampaui kuota untuk baris streaming insert per detik.
Byte per detik per tabel Tabel Anda: TABLE_ID melampaui kuota untuk byte streaming insert per detik.

Tujuan kolom insertId adalah untuk menghapus duplikat baris yang disisipkan. Jika beberapa penyisipan dengan insertId yang sama tiba dalam periode beberapa menit, BigQuery akan menulis satu versi data. Namun, penghapusan duplikat otomatis ini tidak dijamin. Untuk throughput streaming maksimum, sebaiknya Anda tidak menyertakan insertId, dan gunakan penghapusan duplikat manual. Untuk mengetahui informasi selengkapnya, lihat Memastikan konsistensi data.

Saat Anda mengalami error ini, diagnose masalahnya, lalu ikuti langkah-langkah yang direkomendasikan untuk mengatasinya.

Diagnosis

Gunakan tampilan STREAMING_TIMELINE_BY_* untuk menganalisis traffic streaming. Tampilan ini menggabungkan statistik streaming selama interval satu menit, yang dikelompokkan berdasarkan kode error. Error kuota muncul dalam hasil dengan error_code yang sama dengan RATE_LIMIT_EXCEEDED atau QUOTA_EXCEEDED.

Bergantung pada batas kuota spesifik yang telah tercapai, lihat total_rows atau total_input_bytes. Jika error tersebut adalah kuota tingkat tabel, filter menurut table_id.

Misalnya, kueri berikut menampilkan total byte yang diserap per menit, dan jumlah total error kuota:

SELECT
 start_timestamp,
 error_code,
 SUM(total_input_bytes) as sum_input_bytes,
 SUM(IF(error_code IN ('QUOTA_EXCEEDED', 'RATE_LIMIT_EXCEEDED'),
     total_requests, 0)) AS quota_error
FROM
 `region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT
WHERE
  start_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY)
GROUP BY
 start_timestamp,
 error_code
ORDER BY 1 DESC

Resolusi

Untuk mengatasi error kuota ini, lakukan tindakan berikut:

  • Jika Anda menggunakan kolom insertId untuk penghapusan duplikat, dan project Anda berada di region yang mendukung kuota streaming yang lebih tinggi, sebaiknya hapus kolom insertId. Solusi ini mungkin memerlukan beberapa langkah tambahan untuk menghapus duplikat data secara manual. Untuk informasi selengkapnya, lihat Menghapus duplikat secara manual.

  • Jika Anda tidak menggunakan insertId, atau jika tidak mungkin untuk menghapusnya, pantau traffic streaming Anda selama periode 24 jam dan analisis error kuota:

    • Jika Anda melihat sebagian besar error RATE_LIMIT_EXCEEDED, bukan error QUOTA_EXCEEDED, dan keseluruhan traffic di bawah 80% kuota, error tersebut mungkin menunjukkan lonjakan sementara. Anda dapat mengatasi error ini dengan mencoba kembali operasi menggunakan backoff eksponensial di antara percobaan ulang.

    • Jika Anda menggunakan tugas Dataflow untuk menyisipkan data, pertimbangkan untuk menggunakan tugas pemuatan, bukan streaming insert. Untuk informasi selengkapnya, lihat Menetapkan metode penyisipan. Jika Anda menggunakan Dataflow dengan konektor I/O kustom, sebaiknya gunakan konektor I/O bawaan. Untuk mengetahui informasi selengkapnya, lihat Pola I/O kustom.

    • Jika Anda melihat error QUOTA_EXCEEDED atau keseluruhan traffic secara konsisten melebihi 80% kuota, kirimkan permintaan untuk penambahan kuota. Untuk informasi selengkapnya, lihat Meminta batas kuota yang lebih tinggi.

    • Anda juga dapat mempertimbangkan untuk mengganti streaming insert dengan Storage Write API lebih baru yang memiliki throughput lebih tinggi, harga yang lebih rendah, dan banyak fitur berguna.

Error pemuatan kuota file CSV

Jika memuat file CSV besar menggunakan perintah bq load dengan flag --allow_quoted_newlines, Anda mungkin mengalami error ini.

Pesan error

Input CSV files are not splittable and at least one of the files is larger than
the maximum allowed size. Size is: ...

Resolusi

Untuk mengatasi error kuota ini, lakukan tindakan berikut:

  • Tetapkan flag --allow_quoted_newlines ke false.
  • Bagi file CSV menjadi potongan-potongan kecil yang masing-masing berukuran kurang dari 4 GB.

Untuk mengetahui informasi selengkapnya tentang batas yang berlaku saat Anda memuat data ke BigQuery, lihat Memuat tugas.

Error kuota penambahan kueri atau impor tabel

BigQuery akan menampilkan pesan error ini saat tabel Anda mencapai batas operasi tabel per hari untuk tabel Standar. Operasi tabel mencakup total gabungan dari semua tugas pemuatan, tugas penyalinan, dan tugas kueri yang menambahkan atau menimpa tabel tujuan.

Untuk melihat nilai batas Operasi tabel per hari, lihat Tabel standar.

Pesan error

Your table exceeded quota for imports or query appends per table

Saat Anda mengalami error ini, diagnose masalah, lalu ikuti langkah-langkah yang direkomendasikan untuk mengatasinya.

Diagnosis

Jika Anda belum mengidentifikasi sumber tempat sebagian besar operasi tabel berasal, lakukan hal berikut:

  1. Catat project, set data, dan tabel yang digunakan oleh kueri, pemuatan, atau tugas penyalinan yang gagal.

  2. Gunakan tabel INFORMATION_SCHEMA.JOBS_BY_* untuk mempelajari lebih lanjut tugas yang mengubah tabel.

    Contoh berikut menemukan jumlah tugas per jam yang dikelompokkan berdasarkan jenis tugas untuk periode 24 jam menggunakan JOBS_BY_PROJECT. Jika Anda mengharapkan beberapa project ditulis ke tabel, ganti JOBS_BY_PROJECT dengan JOBS_BY_ORGANIZATION.

    SELECT
      TIMESTAMP_TRUNC(creation_time, HOUR),
      job_type,
      count(1)
    FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
    #Adjust time
    WHERE creation_time BETWEEN "2021-06-20 00:00:00" AND "2021-06-21 00:00:00"
    AND destination_table.project_id = "my-project-id"
    AND destination_table.dataset_id = "my_dataset"
    AND destination_table.table_id = "my_table"
    GROUP BY 1, 2
    ORDER BY 1 DESC
    

Resolusi

Kuota ini tidak dapat ditingkatkan. Untuk mengatasi error kuota ini, lakukan tindakan berikut:

  • Jika Anda sering memuat data dari beberapa file kecil yang tersimpan di Cloud Storage yang menggunakan tugas per file, gabungkan beberapa tugas pemuatan ke dalam satu tugas. Anda dapat memuat dari beberapa URI Cloud Storage dengan daftar yang dipisahkan koma (misalnya, gs://my_path/file_1,gs://my_path/file_2), atau menggunakan karakter pengganti (misalnya, gs://my_path/*).

    Untuk mengetahui informasi selengkapnya, lihat Memuat banyak data dalam batch.

  • Misalnya, jika Anda menggunakan tugas pemuatan, pilih, atau salin untuk menambahkan satu baris data ke tabel, sebaiknya pertimbangkan untuk mengelompokkan beberapa tugas ke dalam satu tugas. BigQuery tidak berperforma baik saat digunakan sebagai database relasional. Sebagai praktik terbaik, hindari menjalankan tindakan penambahan baris tunggal yang sering dilakukan.
  • Untuk menambahkan data dengan kecepatan tinggi, pertimbangkan untuk menggunakan BigQuery Storage Write API. Solusi ini direkomendasikan untuk penyerapan data berperforma tinggi. BigQuery Storage Write API memiliki fitur yang tangguh, termasuk semantik pengiriman tepat satu kali. Untuk mempelajari batas dan kuota, lihat Storage Write API dan untuk mengetahui biaya penggunaan API ini, lihat Harga penyerapan data BigQuery.
  • Untuk memantau jumlah partisi yang dimodifikasi pada tabel, gunakan tampilan INFORMATION_SCHEMA.

Error tingkat maksimum dari batas operasi update metadata tabel

BigQuery menampilkan error ini saat tabel Anda mencapai batas kecepatan maksimum operasi update metadata tabel per tabel untuk tabel Standar. Operasi tabel mencakup total gabungan dari semua tugas pemuatan, tugas penyalinan, dan tugas kueri yang menambahkan atau menimpa tabel tujuan atau yang menggunakan DML DELETE, INSERT, MERGE, TRUNCATE TABLE, atau UPDATE untuk menulis data ke tabel.

Untuk melihat nilai batas Kecepatan maksimum operasi update metadata tabel per tabel, lihat Tabel standar.

Pesan error

Exceeded rate limits: too many table update operations for this table

Saat Anda mengalami error ini, diagnose masalah, lalu ikuti langkah-langkah yang direkomendasikan untuk mengatasinya.

Diagnosis

Update tabel metadata dapat berasal dari panggilan API yang mengubah metadata tabel atau dari tugas yang mengubah konten tabel. Jika Anda belum mengidentifikasi sumber tempat sebagian besar operasi update ke metadata tabel berasal, lakukan langkah berikut:

Mengidentifikasi panggilan API
  1. Buka menu navigasi Google Cloud , lalu pilih Logging > Logs Explorer:

    Buka Logs Explorer

  2. Filter log untuk melihat operasi tabel dengan menjalankan kueri berikut:

    resource.type="bigquery_dataset"
    protoPayload.resourceName="projects/my-project-id/datasets/my_dataset/tables/my_table"
    (protoPayload.methodName="google.cloud.bigquery.v2.TableService.PatchTable" OR
    protoPayload.methodName="google.cloud.bigquery.v2.TableService.UpdateTable" OR
    protoPayload.methodName="google.cloud.bigquery.v2.TableService.InsertTable")
    
Mengidentifikasi tugas

Kueri berikut menampilkan daftar tugas yang mengubah tabel yang terpengaruh dalam project tersebut. Jika Anda mengharapkan beberapa project dalam suatu organisasi menulis ke tabel, ganti JOBS_BY_PROJECT dengan JOBS_BY_ORGANIZATION.

SELECT
 job_id,
 user_email,
 query
#Adjust region
FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
#Adjust time
WHERE creation_time BETWEEN "2021-06-21 10:00:00" AND "2021-06-21 20:00:00"
AND destination_table.project_id = "my-project-id"
AND destination_table.dataset_id = "my_dataset"
AND destination_table.table_id = "my_table"

Untuk informasi selengkapnya, lihat Ringkasan log audit BigQuery.

Resolusi

Kuota ini tidak dapat ditingkatkan. Untuk mengatasi error kuota ini, lakukan tindakan berikut:

  • Kurangi kecepatan update untuk metadata tabel.
  • Tambahkan penundaan antara tugas atau operasi tabel untuk memastikan bahwa kecepatan update berada dalam batas.
  • Untuk penyisipan atau modifikasi data, pertimbangkan untuk menggunakan operasi DML. Operasi DML tidak terpengaruh oleh batas kapasitas Kecepatan maksimum operasi update metadata tabel per tabel.

    Operasi DML memiliki batas dan kuota lainnya. Untuk mengetahui informasi selengkapnya, lihat Menggunakan bahasa manipulasi data (DML).

  • Jika Anda sering memuat data dari beberapa file kecil yang tersimpan di Cloud Storage yang menggunakan tugas per file, gabungkan beberapa tugas pemuatan ke dalam satu tugas. Anda dapat memuat dari beberapa URI Cloud Storage dengan daftar yang dipisahkan koma (misalnya, gs://my_path/file_1,gs://my_path/file_2), atau menggunakan karakter pengganti (misalnya, gs://my_path/*).

    Untuk mengetahui informasi selengkapnya, lihat Memuat banyak data dalam batch.

  • Misalnya, jika Anda menggunakan tugas pemuatan, pilih, atau salin untuk menambahkan satu baris data ke tabel, sebaiknya pertimbangkan untuk mengelompokkan beberapa tugas ke dalam satu tugas. BigQuery tidak berperforma baik saat digunakan sebagai database relasional. Sebagai praktik terbaik, hindari menjalankan tindakan penambahan baris tunggal yang sering dilakukan.
  • Untuk menambahkan data dengan kecepatan tinggi, pertimbangkan untuk menggunakan BigQuery Storage Write API. Solusi ini direkomendasikan untuk penyerapan data berperforma tinggi. BigQuery Storage Write API memiliki fitur yang tangguh, termasuk semantik pengiriman tepat satu kali. Untuk mempelajari batas dan kuota, lihat Storage Write API dan untuk mengetahui biaya penggunaan API ini, lihat Harga penyerapan data BigQuery.
  • Untuk memantau jumlah partisi yang dimodifikasi pada tabel, gunakan tampilan INFORMATION_SCHEMA.

Error jumlah maksimum dari batas permintaan API

BigQuery menampilkan error ini saat Anda mencapai batas kapasitas untuk jumlah permintaan API ke BigQuery API per pengguna per metode—misalnya, panggilan metode tables.get dari akun layanan, atau panggilan metode jobs.insert dari email pengguna yang berbeda. Untuk mengetahui informasi selengkapnya, lihat batas kapasitas Jumlah maksimum permintaan API per detik per pengguna per metode di Semua BigQuery API.

Pesan error

Quota exceeded: Your user_method exceeded quota for concurrent api requests
per user per method.

Saat Anda mengalami error ini, diagnose masalah, lalu ikuti langkah-langkah yang direkomendasikan untuk mengatasinya.

Diagnosis

Jika Anda belum mengidentifikasi metode yang telah mencapai batas kapasitas ini, lakukan langkah berikut:

Untuk akun layanan

  1. Buka project yang menghosting akun layanan.

  2. Di Konsol Google Cloud, buka Dasbor API.

    Untuk petunjuk cara melihat informasi penggunaan mendetail dari API, lihat Menggunakan Dasbor API.

  3. Di Dasbor API, pilih BigQuery API.

  4. Untuk menampilkan informasi penggunaan yang lebih mendetail, pilih Metrics, lalu lakukan tindakan berikut:

    1. Untuk Select Graphs, pilih Traffic by API method.

    2. Filter diagram menurut kredensial akun layanan. Anda mungkin melihat lonjakan untuk suatu metode dalam rentang waktu saat Anda melihat error tersebut.

Untuk panggilan API

Beberapa error log panggilan API di log audit BigQuery di Cloud Logging. Untuk mengidentifikasi metode yang telah mencapai batas, lakukan hal berikut:

  1. Di Konsol Google Cloud, buka menu navigasi Google Cloud , lalu pilih Logging > Logs Explorer untuk project Anda:

    Buka Logs Explorer

  2. Filter log dengan menjalankan kueri berikut:

     resource.type="bigquery_resource"
     protoPayload.authenticationInfo.principalEmail="<user email or service account>"
     "Too many API requests per user per method for this user_method"
     In the log entry, you can find the method name under the property protoPayload.method_name.
     

    Untuk informasi selengkapnya, lihat Ringkasan log audit BigQuery.

Resolusi

Untuk mengatasi error kuota ini, lakukan tindakan berikut:

  • Kurangi jumlah permintaan API atau tambahkan penundaan di antara beberapa permintaan API sehingga jumlah permintaan tetap di bawah batas ini.

  • Jika batas hanya terlampaui sesekali, Anda dapat menerapkan percobaan ulang pada error spesifik ini dengan backoff eksponensial.

  • Jika Anda sering menyisipkan data, pertimbangkan untuk menggunakan streaming insert karena streaming insert tidak terpengaruh oleh kuota BigQuery API. Namun, streaming inserts API memiliki biaya yang terkait dengannya dan memiliki serangkaian batas dan kuota sendiri.

    Untuk mempelajari biaya streaming insert, lihat harga BigQuery.

  • Saat memuat data ke BigQuery menggunakan Dataflow dengan konektor I/O BigQuery, Anda mungkin mengalami error ini untuk metode tables.get. Untuk mengatasi masalah ini, lakukan langkah berikut:

    • Tetapkan disposisi pembuatan tabel tujuan ke CREATE_NEVER. Untuk mengetahui informasi selengkapnya, lihat Membuat disposisi.

    • Gunakan Apache Beam SDK versi 2.24.0 atau yang lebih tinggi. Pada SDK versi sebelumnya, disposisi CREATE_IF_NEEDED memanggil metode tables.get untuk memeriksa apakah tabel ada.

  • Anda dapat meminta penambahan kuota dengan menghubungi dukungan atau penjualan. Untuk mendapatkan kuota tambahan, lihat bagian Meminta penambahan kuota. Permintaan penambahan kuota mungkin memerlukan waktu beberapa hari untuk diproses. Untuk memberikan informasi lebih lanjut terkait permintaan Anda, sebaiknya permintaan tersebut menyertakan prioritas tugas, pengguna yang menjalankan kueri, dan metode yang terpengaruh.

Project Anda melampaui kuota untuk byte kueri gratis yang dipindai

BigQuery menampilkan error ini saat Anda menjalankan kueri di paket penggunaan gratis dan akun mencapai batas bulanan ukuran data yang dapat dikueri. Untuk informasi selengkapnya tentang Kueri (analisis), lihat Paket penggunaan gratis.

Pesan error

Your project exceeded quota for free query bytes scanned

Resolusi

Untuk terus menggunakan BigQuery, Anda perlu mengupgrade akun ke akun Penagihan Cloud berbayar.

Error byte tabledata.list maksimum per detik per kuota project

BigQuery akan menampilkan error ini jika nomor project yang disebutkan dalam pesan error mencapai ukuran data maksimum yang dapat dibaca melalui panggilan API tabledata.list dalam sebuah project per detik. Untuk informasi selengkapnya, lihat Byte tabledata.list maksimum per menit.

Pesan error

Your project:[project number] exceeded quota for tabledata.list bytes per second per project

Resolusi

Untuk mengatasi error ini, lakukan hal berikut:

  • Secara umum, sebaiknya upayakan agar tetap di bawah batas ini. Misalnya, dengan memperluas permintaan dalam jangka waktu yang lebih lama dengan penundaan. Jika error tidak sering terjadi, menerapkan percobaan ulang dengan backoff eksponensial akan menyelesaikan masalah ini.
  • Jika kasus penggunaan mengharapkan pembacaan data dalam jumlah besar yang cepat dan sering dari tabel, sebaiknya gunakan BigQuery Storage Read API, bukan tabledata.list API.
  • Jika saran sebelumnya tidak berhasil, Anda dapat meminta penambahan kuota dari dasbor Google Cloud Console API dengan melakukan hal berikut:

    1. Buka dasbor Google Cloud Console API.
    2. Di dasbor, filter Quota: Tabledata list bytes per minute (default quota).
    3. Pilih kuota dan ikuti petunjuk dalam Meminta batas kuota yang lebih tinggi.

    Mungkin perlu waktu beberapa hari untuk meninjau dan memproses permintaan.

Terlalu banyak pernyataan DML yang luar biasa terhadap tabel

Error ini berarti jumlah pernyataan DML yang berubah serentak (UPDATE, DELETE, MERGE) yang berjalan terhadap tabel yang sama telah melebihi batas kuota bahasa manipulasi data (DML). Batas kuota ini berlaku per tabel, dan hanya berlaku untuk mengubah DML, yang tidak termasuk INSERT.

Resolusi

Kelompokkan tugas DML dengan mengikuti Praktik terbaik untuk pernyataan DML.

Error jumlah maksimum tugas penyalinan per hari per kuota project

BigQuery akan menampilkan error ini ketika jumlah tugas penyalinan yang berjalan dalam sebuah project telah melebihi batas harian. Untuk mempelajari lebih lanjut batas untuk Tugas penyalinan per hari, lihat Tugas penyalinan.

Pesan error

Your project exceeded quota for copies per project

Diagnosis

Jika ingin mengumpulkan lebih banyak data tentang asal tugas penyalinan, Anda dapat mencoba langkah berikut:

  • Jika tugas penyalinan Anda berada di satu atau hanya beberapa region, Anda dapat mencoba membuat kueri tabel INFORMATION_SCHEMA.JOBS untuk region tertentu tersebut. Contoh:
    SELECT
    creation_time, job_id, user_email, destination_table.project_id, destination_table.dataset_id, destination_table.table_id
    FROM `PROJECT_ID`.`REGION_NAME`.INFORMATION_SCHEMA.JOBS
    WHERE
    creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 2 DAY) AND CURRENT_TIMESTAMP()
    AND job_type = "COPY"
    order by creation_time DESC
    
    Bagian REGION_NAME harus diganti dengan nama region termasuk awalan region-. Contoh, region-us , region-asia-south1. Anda juga dapat menyesuaikan interval waktu berdasarkan rentang waktu yang diinginkan.
  • Untuk melihat semua tugas penyalinan di semua region, Anda dapat menggunakan filter berikut di Cloud Logging:
    resource.type="bigquery_resource"
    protoPayload.methodName="jobservice.insert"
    protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.tableCopy:*
    

Resolusi

  • Jika sasaran operasi penyalinan yang sering dilakukan adalah untuk membuat snapshot data, sebaiknya gunakan snapshot tabel. Snapshot tabel adalah alternatif yang lebih murah dan lebih cepat untuk menyalin tabel lengkap.
  • Anda dapat meminta penambahan kuota dengan menghubungi dukungan atau penjualan. Mungkin perlu waktu beberapa hari untuk meninjau dan memproses permintaan. Sebaiknya nyatakan prioritas, kasus penggunaan, dan ID project dalam permintaan.

Jumlah maksimum kueri serentak yang berisi fungsi jarak jauh

BigQuery akan menampilkan error ini ketika jumlah kueri serentak yang berisi fungsi jarak jauh melebihi batas.

Untuk mempelajari batas Fungsi jarak jauh lebih lanjut, lihat Fungsi jarak jauh.

Pesan error

Exceeded rate limits: too many concurrent queries with remote functions for
this project

Diagnosis

Untuk melihat batas kueri serentak yang berisi fungsi jarak jauh, lihat Batas fungsi jarak jauh.

Resolusi

  • Saat menggunakan fungsi jarak jauh, patuhi praktik terbaik untuk fungsi jarak jauh.
  • Anda dapat meminta penambahan kuota dengan menghubungi dukungan atau penjualan. Mungkin perlu waktu beberapa hari untuk meninjau dan memproses permintaan. Sebaiknya nyatakan prioritas, kasus penggunaan, dan ID project dalam permintaan.

Error batas ukuran shuffle

BigQuery akan menampilkan error ini jika project Anda melebihi batas ukuran memori dan disk maksimum yang tersedia untuk operasi shuffle.

Kuota ini dihitung per pemesanan dan di-slice ke seluruh project untuk pemesanan. Kuota tidak dapat diubah oleh Cloud Customer Care. Anda dapat mempelajari penggunaan Anda lebih lanjut dengan membuat kueri untuk tampilan INFORMATION_SCHEMA.JOBS_TIMELINE.

Pesan error

Anda menerima salah satu pesan error berikut:

  • Quota exceeded: Your project exceeded quota for total shuffle size limit.
  • Resources exceeded: Your project or organization exceeded the maximum
    disk and memory limit available for shuffle operations. Consider provisioning
    more slots, reducing query concurrency, or using more efficient logic in this
    job.

Resolusi

Untuk mengatasi error ini, lakukan hal berikut:

Jumlah maksimum pernyataan CREATE MODEL

Error ini berarti Anda telah melebihi kuota untuk pernyataan CREATE MODEL.

Pesan error

Quota exceeded: Your project exceeded quota for CREATE MODEL queries per project.

Resolusi

Jika Anda melebihi kuota untuk pernyataan CREATE MODEL, minta penambahan kuota.