Memperkirakan dan mengontrol biaya
Halaman ini menjelaskan praktik terbaik untuk memperkirakan dan mengontrol biaya di BigQuery.
Biaya utama di BigQuery adalah komputasi, yang digunakan untuk pemrosesan kueri, dan penyimpanan, untuk data yang disimpan di BigQuery. BigQuery menawarkan dua jenis model harga untuk pemrosesan kueri, yaitu harga sesuai permintaan dan berbasis kapasitas. Setiap model menawarkan praktik terbaik yang berbeda untuk kontrol biaya. Untuk data yang disimpan di BigQuery, biaya bergantung pada model penagihan penyimpanan yang dikonfigurasi untuk setiap set data.
Memahami harga komputasi untuk BigQuery
Ada perbedaan kecil dalam harga komputasi untuk BigQuery yang memengaruhi perencanaan kapasitas dan kontrol biaya.
Model penetapan harga
Untuk komputasi on-demand di BigQuery, Anda akan dikenai biaya per TiB untuk kueri BigQuery.
Atau, untuk komputasi kapasitas di BigQuery, Anda akan dikenai biaya untuk resource komputasi (slot) yang digunakan untuk memproses kueri. Untuk menggunakan model ini, Anda mengonfigurasi reservasi untuk slot.
Reservasi memiliki fitur berikut:
- Node tersebut dialokasikan dalam kumpulan slot, dan memungkinkan Anda mengelola kapasitas serta mengisolasi beban kerja dengan cara yang sesuai untuk organisasi Anda.
- Project tersebut harus berada dalam satu project administrasi dan tunduk pada kuota dan batas.
Model harga kapasitas menawarkan beberapa edisi, yang semuanya menawarkan opsi bayar sesuai penggunaan yang ditagih dalam jam slot. Edisi Enterprise dan Enterprise Plus juga menyediakan komitmen slot opsional satu atau tiga tahun yang dapat menghemat biaya dibandingkan tarif bayar sesuai pemakaian.
Anda juga dapat menetapkan reservasi penskalaan otomatis menggunakan opsi bayar sesuai penggunaan. Untuk informasi selengkapnya, lihat referensi berikut:
- Untuk membandingkan model harga, lihat Memilih model.
- Untuk mengetahui detail harga, lihat Harga komputasi on demand dan Harga komputasi kapasitas.
Membatasi biaya untuk setiap model
Jika Anda menggunakan model harga on demand, satu-satunya cara untuk membatasi biaya adalah dengan mengonfigurasi kuota harian tingkat project atau tingkat pengguna. Namun, kuota ini menerapkan batas maksimum yang mencegah pengguna menjalankan kueri di luar batas kuota. Untuk menetapkan kuota, lihat Membuat kuota kueri kustom.
Saat menggunakan model harga kapasitas menggunakan reservasi slot, Anda menentukan jumlah maksimum slot yang tersedia untuk reservasi. Anda juga dapat membeli komitmen slot yang memberikan harga diskon selama periode komitmen.
Anda dapat menggunakan edisi sepenuhnya on demand dengan menetapkan dasar pengukuran pemesanan ke 0 dan maksimum ke setelan yang memenuhi kebutuhan beban kerja Anda. BigQuery akan otomatis menskalakan hingga jumlah slot yang diperlukan untuk workload Anda, dan tidak pernah melebihi maksimum yang Anda tetapkan. Untuk informasi selengkapnya, lihat Pengelolaan workload menggunakan pemesanan.
Mengontrol biaya kueri
Untuk mengontrol biaya setiap kueri, sebaiknya ikuti terlebih dahulu praktik terbaik untuk mengoptimalkan komputasi kueri dan mengoptimalkan penyimpanan.
Bagian berikut menguraikan praktik terbaik tambahan yang dapat Anda gunakan untuk lebih mengontrol biaya kueri.
Membuat kuota kueri kustom
Praktik terbaik: Gunakan kuota kueri harian kustom untuk membatasi jumlah data yang diproses per hari.
Anda dapat mengelola biaya dengan menetapkan kuota kustom yang menentukan batas jumlah data yang diproses per hari per project atau per pengguna. Pengguna tidak dapat menjalankan kueri setelah kuota tercapai.
Untuk menetapkan kuota kustom, Anda memerlukan peran atau izin tertentu. Untuk mengetahui kuota yang akan ditetapkan, lihat Kuota dan batas.
Untuk mengetahui informasi selengkapnya, lihat Membatasi biaya untuk setiap model harga.
Memeriksa estimasi biaya sebelum menjalankan kueri
Praktik terbaik: Sebelum menjalankan kueri, lihat pratinjau kueri untuk memperkirakan biaya.
Saat menggunakan model harga on-demand, kueri ditagih sesuai dengan jumlah byte yang dibaca. Untuk memperkirakan biaya sebelum menjalankan kueri:
- Gunakan validator kueri di konsol Google Cloud.
- Jalankan uji coba untuk kueri.
Menggunakan validator kueri
Saat Anda memasukkan kueri di konsol Google Cloud, validator kueri akan memverifikasi sintaksis kueri dan memberikan estimasi jumlah byte yang dibaca. Anda dapat menggunakan estimasi ini untuk menghitung biaya kueri di kalkulator harga.
Jika kueri Anda tidak valid, validator kueri akan menampilkan pesan error. Contoh:
Not found: Table myProject:myDataset.myTable was not found in location US
Jika kueri Anda valid, validator kueri akan memberikan estimasi jumlah byte yang diperlukan untuk memproses kueri. Contoh:
This query will process 623.1 KiB when run.
Melakukan uji coba
Untuk melakukan uji coba, lakukan hal berikut:
Konsol
Buka halaman BigQuery.
Masukkan kueri Anda di editor kueri.
Jika kueri valid, tanda centang akan muncul secara otomatis bersama dengan jumlah data yang akan diproses oleh kueri. Jika kueri tidak valid, tanda seru akan muncul bersama dengan pesan error.
bq
Masukkan kueri seperti berikut menggunakan flag --dry_run
.
bq query \ --use_legacy_sql=false \ --dry_run \ 'SELECT COUNTRY, AIRPORT, IATA FROM `project_id`.dataset.airports LIMIT 1000'
Untuk kueri yang valid, perintah tersebut menghasilkan respons berikut:
Query successfully validated. Assuming the tables are not modified, running this query will process 10918 bytes of data.
API
Untuk melakukan uji coba menggunakan API, kirim tugas kueri dengan
dryRun
ditetapkan ke true
pada
jenis
JobConfiguration.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery PHP API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Tetapkan properti QueryJobConfig.dry_run ke True
.
Client.query() selalu menampilkan QueryJob yang telah selesai saat diberi konfigurasi kueri uji coba.
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Memperkirakan biaya kueri
Saat menggunakan model harga on demand, Anda dapat memperkirakan biaya menjalankan kueri dengan menghitung jumlah byte yang diproses.
Penghitungan ukuran kueri sesuai permintaan
Untuk menghitung jumlah byte yang diproses oleh berbagai jenis kueri, lihat bagian berikut:
Menghindari menjalankan kueri untuk menjelajahi data tabel
Praktik terbaik: Jangan menjalankan kueri untuk menjelajahi atau melihat pratinjau data tabel.
Jika ingin bereksperimen atau mengeksplorasi data, Anda dapat menggunakan opsi pratinjau tabel untuk melihat data tanpa biaya dan tanpa memengaruhi kuota.
BigQuery mendukung opsi pratinjau data berikut:
- Di konsol Google Cloud, pada halaman detail tabel, klik tab Pratinjau untuk mengambil sampel data.
- Di alat command line bq, gunakan perintah
bq head
dan tentukan jumlah baris yang akan dilihat pratinjaunya. - Di API, gunakan
tabledata.list
untuk mengambil data tabel dari kumpulan baris yang ditentukan. - Hindari penggunaan
LIMIT
dalam tabel yang tidak dikelompokkan. Untuk tabel yang tidak dikelompokkan, klausaLIMIT
tidak akan mengurangi biaya komputasi.
Membatasi jumlah byte yang ditagih per kueri
Praktik terbaik: Gunakan setelan penagihan byte maksimum untuk membatasi biaya kueri saat menggunakan model harga on demand.
Anda dapat membatasi jumlah byte yang ditagih untuk kueri menggunakan setelan byte maksimum yang ditagih. Jika Anda menetapkan byte maksimum yang ditagih, jumlah byte yang dibaca kueri akan diperkirakan sebelum eksekusi kueri. Jika jumlah perkiraan byte melebihi batas, kueri akan dibatalkan tanpa penarikan biaya.
Untuk tabel yang dikelompokkan, estimasi jumlah byte yang ditagih untuk kueri adalah batas atas, dan dapat lebih tinggi dari jumlah byte sebenarnya yang ditagih setelah menjalankan kueri. Jadi dalam beberapa kasus, jika Anda menetapkan byte maksimum yang ditagih, kueri pada tabel yang dikelompokkan bisa gagal, meskipun byte sebenarnya yang ditagih tidak akan melebihi setelan byte maksimum yang ditagih.
Jika kueri gagal karena setelan byte maksimum yang ditagih, error yang serupa dengan yang berikut akan ditampilkan:
Error: Query exceeded limit for bytes billed: 1000000. 10485760 or higher
required.
Untuk menetapkan byte maksimum yang ditagih:
Konsol
- Di Editor kueri, klik Lainnya > Setelan kueri > Opsi lanjutan.
- Di kolom Byte maksimum yang ditagih, masukkan bilangan bulat.
- Klik Simpan.
bq
Gunakan perintah bq query
dengan flag --maximum_bytes_billed
.
bq query --maximum_bytes_billed=1000000 \ --use_legacy_sql=false \ 'SELECT word FROM `bigquery-public-data`.samples.shakespeare'
API
Tetapkan properti maximumBytesBilled
di JobConfigurationQuery
atau
QueryRequest
.
Menghindari penggunaan LIMIT
dalam tabel yang tidak dikelompokkan
Praktik terbaik: Untuk tabel yang tidak dikelompokkan, jangan gunakan klausa LIMIT
sebagai
metode kontrol biaya.
Untuk tabel yang tidak dikelompokkan, menerapkan klausa LIMIT
ke kueri tidak akan memengaruhi
jumlah data yang dibaca. Anda dikenai biaya untuk membaca semua byte di
seluruh tabel seperti yang ditunjukkan oleh kueri, meskipun kueri hanya menampilkan
subset. Dengan tabel yang dikelompokkan, klausa LIMIT
dapat mengurangi jumlah byte
yang dipindai, karena pemindaian akan berhenti saat blok yang dipindai sudah mencukupi untuk mendapatkan
hasil. Anda hanya dikenai biaya untuk byte yang dipindai.
Merealisasikan hasil kueri dalam tahapan
Praktik terbaik: Jika memungkinkan, realisasikan hasil kueri Anda secara bertahap.
Jika Anda membuat kueri multi-tahap yang besar, setiap kali Anda menjalankannya, BigQuery akan membaca semua data yang diperlukan oleh kueri tersebut. Anda akan ditagih untuk semua data yang dibaca setiap kali kueri dijalankan.
Sebagai gantinya, bagi kueri Anda ke dalam beberapa tahapan dengan setiap tahap merealisasikan hasil kueri dengan menuliskannya ke tabel tujuan. Membuat kueri tabel tujuan yang lebih kecil akan mengurangi jumlah data yang dibaca dan menurunkan biaya. Biaya penyimpanan hasil yang direalisasikan jauh lebih murah daripada biaya pemrosesan data dalam jumlah besar.
Mengontrol biaya workload
Bagian ini menjelaskan praktik terbaik untuk mengontrol biaya dalam workload. Workload adalah kumpulan kueri terkait. Misalnya, beban kerja dapat berupa pipeline transformasi data yang berjalan setiap hari, serangkaian dasbor yang dijalankan oleh sekelompok analis bisnis, atau beberapa kueri ad hoc yang dijalankan oleh sekelompok data scientist.
Menggunakan Google Cloud kalkulator harga
Praktik terbaik: Gunakan kalkulator hargaGoogle Cloud untuk membuat estimasi biaya bulanan secara keseluruhan untuk BigQuery berdasarkan proyeksi penggunaan. Kemudian, Anda dapat membandingkan estimasi ini dengan biaya aktual untuk mengidentifikasi area yang dapat dioptimalkan.
Sesuai permintaan
Untuk memperkirakan biaya di kalkulator hargaGoogle Cloud saat menggunakan model harga sesuai permintaan, ikuti langkah-langkah berikut:
- Buka kalkulator hargaGoogle Cloud .
- Klik Tambahkan ke estimasi.
- Pilih BigQuery.
- Pilih "On-demand" untuk Jenis layanan.
- Pilih lokasi tempat kueri Anda akan dijalankan.
- Untuk Jumlah data yang dikueri, masukkan estimasi byte yang dibaca dari uji coba atau Validator kueri.
- Masukkan estimasi penggunaan penyimpanan untuk Active storage, Long-term storage, Streaming insert, dan Streaming read. Anda hanya perlu memperkirakan penyimpanan fisik atau penyimpanan logis, bergantung pada model penagihan penyimpanan set data.
- Estimasi muncul di panel Detail biaya. Untuk informasi selengkapnya tentang estimasi biaya, klik Buka tampilan mendetail. Anda juga dapat mendownload dan membagikan estimasi biaya.
Untuk mengetahui informasi selengkapnya, lihat Harga on demand.
Edisi
Untuk memperkirakan biaya di kalkulator hargaGoogle Cloud saat menggunakan model harga berbasis kapasitas dengan edisi BigQuery, ikuti langkah-langkah berikut:
- Buka kalkulator hargaGoogle Cloud .
- Klik Tambahkan ke estimasi.
- Pilih BigQuery.
- Pilih "Edisi" untuk Jenis layanan.
- Pilih lokasi tempat slot digunakan.
- Pilih Edisi Anda.
- Pilih Slot maksimum, Slot dasar pengukuran, Komitmen opsional, dan Estimasi penggunaan penskalaan otomatis.
- Pilih lokasi tempat data disimpan.
- Masukkan estimasi penggunaan penyimpanan untuk Active storage, Long-term storage, Streaming insert, dan Streaming read. Anda hanya perlu memperkirakan penyimpanan fisik atau penyimpanan logis, bergantung pada model penagihan penyimpanan set data.
- Estimasi muncul di panel Detail biaya. Untuk informasi selengkapnya tentang estimasi biaya, klik Buka tampilan mendetail. Anda juga dapat mendownload dan membagikan estimasi biaya.
Untuk informasi selengkapnya, lihat Harga berdasarkan kapasitas.
Menggunakan reservasi dan komitmen
Praktik terbaik: Gunakan pemesanan dan komitmen BigQuery untuk mengontrol biaya.
Untuk mengetahui informasi selengkapnya, lihat Membatasi biaya untuk setiap model harga.
Menggunakan estimator slot
Praktik terbaik: Gunakan estimator slot untuk memperkirakan jumlah slot yang diperlukan untuk beban kerja Anda.
Estimator slot BigQuery membantu Anda mengelola kapasitas slot berdasarkan metrik histori performa.
Selain itu, pelanggan yang menggunakan model harga on demand dapat melihat rekomendasi ukuran untuk komitmen dan pemesanan penskalaan otomatis dengan performa yang serupa saat beralih ke harga berbasis kapasitas.
Membatalkan tugas yang berjalan lama dan tidak perlu
Untuk mengosongkan kapasitas, periksa tugas yang berjalan lama untuk memastikan bahwa tugas tersebut harus terus berjalan. Jika tidak, batalkan pesanan tersebut.
Melihat biaya menggunakan dasbor
Praktik terbaik: Buat dasbor untuk menganalisis data Cloud Billing sehingga Anda dapat memantau dan melakukan penyesuaian pada penggunaan BigQuery.
Anda dapat mengekspor data penagihan ke BigQuery dan memvisualisasikannya dalam alat seperti Looker Studio. Untuk tutorial tentang cara membuat dasbor penagihan, lihat Memvisualisasikan Google Cloud penagihan menggunakan BigQuery dan Looker Studio.
Menggunakan anggaran dan pemberitahuan penagihan
Praktik terbaik: Gunakan anggaran Penagihan Cloud untuk memantau tagihan BigQuery Anda di satu tempat.
Anggaran Penagihan Cloud memungkinkan Anda melacak biaya aktual terhadap biaya yang Anda rencanakan. Setelah menetapkan jumlah anggaran, Anda dapat menetapkan aturan nilai minimum pemberitahuan anggaran yang digunakan untuk memicu notifikasi email. Email pemberitahuan anggaran membantu Anda terus mendapatkan informasi tentang pelacakan pengeluaran BigQuery terhadap anggaran.
Mengontrol biaya penyimpanan
Gunakan praktik terbaik ini untuk mengoptimalkan biaya penyimpanan BigQuery. Anda juga dapat mengoptimalkan penyimpanan untuk performa kueri.
Menggunakan penyimpanan jangka panjang
Praktik terbaik: Gunakan harga penyimpanan jangka panjang untuk mengurangi biaya data lama.
Saat Anda memuat data ke penyimpanan BigQuery, data akan tunduk pada harga penyimpanan BigQuery. Untuk data lama, Anda dapat otomatis memanfaatkan harga penyimpanan jangka panjang BigQuery.
Jika Anda memiliki tabel yang tidak diubah selama 90 hari berturut-turut, harga penyimpanan untuk tabel tersebut akan otomatis turun 50 persen. Jika Anda memiliki tabel berpartisi, setiap partisi akan dipertimbangkan secara terpisah agar memenuhi syarat untuk harga jangka panjang yang tunduk pada aturan yang sama seperti tabel yang tidak berpartisi.
Mengonfigurasi model penagihan penyimpanan
Praktik terbaik: Optimalkan model penagihan penyimpanan berdasarkan pola penggunaan Anda.
BigQuery mendukung penagihan penyimpanan menggunakan byte logis (tidak dikompresi) atau fisik (dikompresi), atau kombinasi keduanya. Model penagihan penyimpanan yang dikonfigurasi untuk setiap set data menentukan harga penyimpanan Anda, tetapi tidak memengaruhi performa kueri.
Anda dapat menggunakan tampilan INFORMATION_SCHEMA
untuk menentukan model penagihan penyimpanan yang paling sesuai berdasarkan pola penggunaan Anda.
Menghindari menimpa tabel
Praktik terbaik: Saat menggunakan model penagihan penyimpanan fisik, hindari menimpa tabel berulang kali.
Saat Anda menimpa tabel, misalnya dengan menggunakan parameter --replace
dalam tugas pemuatan batch
atau menggunakan pernyataan SQL TRUNCATE TABLE
, data yang diganti akan disimpan selama durasi perjalanan waktu dan periode failsafe.
Jika sering menimpa tabel, Anda akan dikenai biaya penyimpanan tambahan.
Sebagai gantinya, Anda dapat memuat data secara bertahap ke dalam tabel menggunakan parameter WRITE_APPEND
dalam tugas pemuatan, pernyataan SQL MERGE
, atau menggunakan
API tulis penyimpanan.
Mengurangi periode perjalanan waktu
Praktik terbaik: Berdasarkan persyaratan, Anda dapat menurunkan periode perjalanan waktu.
Mengurangi periode perjalanan waktu dari nilai default tujuh hari akan mengurangi periode retensi untuk data yang dihapus dari atau diubah dalam tabel. Anda hanya akan ditagih untuk penyimpanan perjalanan waktu jika menggunakan model penagihan penyimpanan fisik (terkompresi).
Periode perjalanan waktu ditetapkan di tingkat set data. Anda juga dapat menetapkan periode perjalanan waktu default untuk set data baru menggunakan setelan konfigurasi.
Menggunakan masa berlaku tabel untuk tabel tujuan
Praktik terbaik: Jika Anda menulis hasil kueri yang besar ke tabel tujuan, gunakan waktu habis masa berlaku tabel default untuk menghapus data saat tidak diperlukan lagi.
Menyimpan kumpulan hasil yang besar dalam penyimpanan BigQuery memerlukan biaya. Jika Anda tidak memerlukan akses permanen ke hasil, gunakan masa berlaku tabel default untuk menghapus data Anda secara otomatis.
Mengarsipkan data ke Cloud Storage
Praktik terbaik: Pertimbangkan untuk mengarsipkan data di Cloud Storage.
Anda dapat memindahkan data dari BigQuery ke Cloud Storage berdasarkan kebutuhan bisnis terkait pengarsipan. Sebagai praktik terbaik, pertimbangkan harga penyimpanan jangka panjang dan model penagihan penyimpanan fisik sebelum mengekspor data dari BigQuery.
Langkah berikutnya
- Pelajari tentang harga BigQuery.
- Pelajari cara mengoptimalkan kueri.
- Pelajari cara mengoptimalkan penyimpanan.
Untuk mempelajari tentang penagihan, pemberitahuan, dan memvisualisasikan data, lihat topik berikut: