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
ataulimit
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
menunjukkanPERMISSION_DENIED
, yang sesuai dengan kode status403
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 kueriSELECT
. 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 kolominsertId
. 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 errorQUOTA_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
kefalse
. - 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:
Catat project, set data, dan tabel yang digunakan oleh kueri, pemuatan, atau tugas penyalinan yang gagal.
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, gantiJOBS_BY_PROJECT
denganJOBS_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
Buka menu navigasi Google Cloud > Logs Explorer:
, lalu pilih LoggingFilter 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
Buka project yang menghosting akun layanan.
Di Konsol Google Cloud, buka Dasbor API.
Untuk petunjuk cara melihat informasi penggunaan mendetail dari API, lihat Menggunakan Dasbor API.
Di Dasbor API, pilih BigQuery API.
Untuk menampilkan informasi penggunaan yang lebih mendetail, pilih Metrics, lalu lakukan tindakan berikut:
Untuk Select Graphs, pilih Traffic by API method.
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:
Di Konsol Google Cloud, buka menu navigasi Google Cloud > Logs Explorer untuk project Anda:
, lalu pilih LoggingFilter 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 metodetables.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:
- Buka dasbor Google Cloud Console API.
- Di dasbor, filter Quota:
Tabledata list bytes per minute (default quota)
. - 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: BagianSELECT 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
REGION_NAME
harus diganti dengan nama region termasuk awalanregion-
. 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:
- Tingkatkan pemesanan Anda
- Optimalkan kueri
- Kurangi konkurensi kueri atau terwujudnya hasil menengah untuk mengurangi dependensi pada resource. Untuk mengetahui informasi selengkapnya, lihat Membuat kueri antrean dan Membuat tampilan terwujud.
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.