Memahami slot

Slot BigQuery adalah unit komputasi virtual yang digunakan oleh BigQuery untuk menjalankan kueri SQL, kode Python, atau jenis pekerjaan lainnya. Selama eksekusi kueri, BigQuery secara otomatis menentukan jumlah slot yang digunakan oleh kueri. Jumlah slot yang digunakan bergantung pada jumlah data yang diproses, kompleksitas kueri, dan jumlah slot yang tersedia. Secara umum, akses ke lebih banyak slot memungkinkan Anda menjalankan lebih banyak kueri serentak, dan kueri kompleks Anda dapat berjalan lebih cepat. Anda tidak dapat mengubah jumlah slot yang digunakan oleh BigQuery untuk menjalankan kueri secara manual.

Harga on-demand dan berbasis kapasitas

Meskipun semua kueri menggunakan slot, Anda memiliki dua opsi untuk cara penagihan penggunaan, model harga on-demand atau model harga berbasis kapasitas.

Secara default, Anda akan ditagih menggunakan model on-demand. Dengan model ini, Anda dikenai biaya untuk jumlah data yang diproses (diukur dalam TiB) oleh setiap kueri. Project yang menggunakan model on-demand tunduk pada batas slot serentak maksimum untuk harga on-demand dengan kemampuan burst sementara. Sebagian besar pengguna pada model on demand menganggap batas kapasitas slot ini lebih dari cukup. Namun, bergantung pada workload Anda, akses ke lebih banyak slot dapat meningkatkan performa kueri. Untuk memeriksa penggunaan slot akun Anda, lihat Memantau kondisi, pemanfaatan resource, dan tugas.

Dengan model berbasis kapasitas, Anda membayar kapasitas slot yang dialokasikan untuk kueri Anda dari waktu ke waktu. Model ini memberi Anda kontrol eksplisit atas total kapasitas slot. Anda secara eksplisit memilih jumlah slot yang akan digunakan melalui pemesanan. Anda dapat menentukan jumlah slot dalam reservasi sebagai jumlah dasar pengukuran yang selalu dialokasikan, atau sebagai jumlah yang diskalakan otomatis, yang dialokasikan saat diperlukan. Reservasi dengan slot penskalaan otomatis akan menskalakan kapasitasnya untuk mengakomodasi permintaan workload Anda. BigQuery mengalokasikan slot saat workload berubah. Dengan begitu, Anda dapat mengonfigurasi jumlah slot dalam pemesanan berdasarkan performa atau sifat penting workload yang menggunakan pemesanan tersebut.

Menghindari biaya on-demand yang tidak terduga

Untuk mencegah project yang belum ditetapkan atau baru dibuat ditetapkan secara default ke harga on-demand, kelola pemesanan BigQuery Anda menggunakan hierarki resourceGoogle Cloud dengan praktik berikut:

  • Menetapkan di level folder atau organisasi: alih-alih penyiapan per project, buat penetapan pemesanan di level folder atau organisasi. Cara ini memastikan bahwa semua project yang ada dan mendatang dalam hierarki tersebut otomatis mewarisi reservasi dan menggunakan kapasitas slot reservasi.
  • Pertimbangkan perilaku default: tanpa penetapan yang eksplisit atau diwariskan, BigQuery secara otomatis menerapkan model harga on-demand.
  • Penggantian untuk pengecualian: jika project tertentu harus menggunakan harga on-demand, Anda dapat mengganti penetapan yang diwariskan dengan menetapkan project tersebut secara eksplisit ke pemesanan None.

Untuk mengetahui detail tentang prioritas penetapan, lihat Penetapan pemesanan.

Eksekusi kueri menggunakan slot

Saat menjalankan tugas kueri, BigQuery akan mengonversi pernyataan SQL menjadi rencana eksekusi, yang terdiri dari serangkaian tahap kueri. Tahapan pada gilirannya terdiri dari serangkaian langkah eksekusi. BigQuery menggunakan arsitektur paralel terdistribusi untuk menjalankan kueri. Stage akan membuat model unit tugas yang dapat dijalankan secara paralel. Data diteruskan antar-tahapan menggunakan arsitektur shuffle terdistribusi, yang dibahas secara lebih mendetail dalam postingan blogGoogle Cloud ini.

Eksekusi kueri BigQuery bersifat dinamis. Rencana kueri dapat diubah saat kueri sedang diproses. Distribusi pekerjaan dapat dioptimalkan untuk distribusi data seiring penambahan tahap. Selain itu, kapasitas untuk eksekusi kueri dapat berubah saat kueri lain dimulai atau selesai, atau saat penskala otomatis menambahkan slot ke pemesanan.

BigQuery dapat menjalankan beberapa tahap secara serentak, dapat menggunakan eksekusi spekulatif untuk mempercepat kueri, dan dapat mempartisi ulang secara dinamis tahap untuk mencapai paralelisasi yang optimal.

Ekonomi resource slot

Jika kueri meminta lebih banyak slot daripada yang tersedia, BigQuery akan mengantrekan unit tugas individu dan menunggu hingga slot tersedia. Saat progres eksekusi kueri dibuat, dan setelah slot dikosongkan, unit tugas yang diantrekan ini akan diambil secara dinamis untuk dieksekusi.

BigQuery dapat meminta berapa pun jumlah slot untuk tahap kueri tertentu. Jumlah slot yang diminta tidak terkait dengan jumlah kapasitas yang Anda beli, melainkan indikasi faktor paralelisasi paling optimal yang dipilih oleh BigQuery untuk tahap tersebut. Unit antrean tugas dan dieksekusi saat slot tersedia.

Jika permintaan kueri melebihi slot yang tersedia, Anda tidak akan dikenai biaya atas slot tambahan dan tidak akan dikenai biaya untuk tarif on demand tambahan. Setiap unit tugas individual Anda dimasukkan ke dalam antrean.

Misalnya,

  1. Tahap kueri meminta 2.000 slot, tetapi hanya 1.000 yang tersedia.
  2. BigQuery menggunakan 1.000 slot dan mengantrekan 1.000 slot lainnya.
  3. Setelah itu, jika 100 slot menyelesaikan tugasnya, slot tersebut secara dinamis mengambil 100 unit tugas dari 1.000 unit tugas yang diantrekan. 900 unit tugas yang diantrekan akan tetap ada.
  4. Setelah itu, jika 500 slot menyelesaikan pekerjaannya, slot tersebut secara dinamis mengambil 500 unit tugas dari 900 unit tugas yang diantrekan. 400 unit tugas yang diantrekan akan tetap ada.
Slot BigQuery diantrekan saat permintaan melebihi ketersediaan.
Slot BigQuery diantrekan jika permintaan melebihi ketersediaan

Jika workload memerlukan lebih banyak slot daripada yang tersedia untuk reservasi, durasi tugas dapat meningkat karena tugas menunggu slot tersedia. Hal ini disebut sebagai perebutan slot. Konflik slot dapat meningkat jika permintaan workload jauh lebih besar daripada slot yang tersedia untuk pemesanan.

Prioritas kapasitas

Saat BigQuery mengalami permintaan tinggi untuk resource slot di region tertentu, BigQuery akan mengelola persaingan dengan memprioritaskan kapasitas. Prioritas ini memastikan bahwa pelanggan dengan model kapasitas tingkat lebih tinggi akan lebih sedikit terpengaruh. Sistem memprioritaskan kapasitas dalam urutan berikut:

  1. Baseline dan kapasitas komitmen edisi Enterprise Plus dan Enterprise.
  2. Kapasitas yang diskalakan otomatis Enterprise Plus.
  3. Kapasitas yang diskalakan otomatis edisi Enterprise.
  4. Edisi standar dan kapasitas on-demand.

Jika terjadi pertentangan di suatu region, permintaan kapasitas on-demand dan edisi Standard lebih mungkin mengalami penundaan akses karena sistem mengalokasikan resource ke edisi tingkat yang lebih tinggi terlebih dahulu.

Penjadwalan wajar di BigQuery

BigQuery mengalokasikan kapasitas slot dalam satu pemesanan menggunakan algoritma yang disebut penjadwalan wajar.

Scheduler BigQuery memberlakukan pembagian slot yang sama di antara project-project dengan menjalankan kueri dalam pemesanan, lalu dalam tugas project tertentu. Scheduler akan memberikan perlakuan yang adil pada akhirnya. Selama periode singkat, beberapa tugas mungkin mendapatkan bagian slot yang tidak proporsional, tetapi scheduler pada akhirnya akan memperbaikinya. Tujuan penjadwal adalah menemukan keseimbangan antara mengeluarkan tugas yang berjalan secara agresif (yang menyebabkan pemborosan waktu slot) dan terlalu longgar (yang menyebabkan tugas dengan tugas yang berjalan lama mendapatkan pembagian waktu slot yang tidak proporsional).

Penjadwalan wajar memastikan bahwa setiap kueri memiliki akses ke semua slot yang tersedia kapan saja, dan kapasitas secara dinamis dan otomatis dialokasikan ulang di antara kueri yang aktif mengikuti perubahan permintaan kapasitas setiap kueri. Kueri selesai dan kueri baru dikirim untuk dieksekusi dalam kondisi berikut:

  • Setiap kali kueri baru dikirimkan, kapasitas akan otomatis dialokasikan ulang untuk menjalankan kueri. Setiap unit tugas dapat dijeda, dilanjutkan, dan dimasukkan ke dalam antrean dengan baik saat kapasitas yang lebih besar tersedia untuk setiap kueri.
  • Setiap kali kueri selesai, kapasitas yang terpakai oleh kueri tersebut akan langsung tersedia untuk digunakan oleh semua kueri lain.
  • Setiap kali permintaan kapasitas kueri berubah karena perubahan DAG dinamis kueri, BigQuery otomatis mengevaluasi ulang ketersediaan kapasitas untuk kueri ini dan semua kueri lainnya, serta mengalokasikan ulang dan menjeda slot sesuai kebutuhan.
Penjadwalan slot BigQuery yang adil di antara beberapa kueri.
Penjadwalan wajar di BigQuery

Bergantung pada kompleksitas dan ukuran, suatu kueri mungkin tidak memerlukan semua slot yang berhak dimilikinya, atau mungkin memerlukan lebih banyak slot. BigQuery secara dinamis memastikan bahwa, dengan penjadwalan yang adil, semua slot dapat digunakan sepenuhnya kapan saja.

Jika tugas penting terus-menerus membutuhkan lebih banyak slot daripada yang diterima dari scheduler, pertimbangkan untuk membuat pemesanan tambahan dengan jumlah slot yang diperlukan dan menetapkan tugas ke pemesanan tersebut.

Sebagai contoh penjadwalan yang adil, misalkan Anda memiliki konfigurasi pemesanan berikut:

  • Pemesanan A, yang memiliki 1.000 slot dasar pengukuran tanpa penskalaan otomatis
  • Project A dan project B, yang ditetapkan ke pemesanan Anda

Skenario 1: Di project A, Anda menjalankan kueri A (satu kueri serentak) yang memerlukan penggunaan slot tinggi, dan di project B, Anda menjalankan 20 kueri serentak. Meskipun ada total 21 kueri yang menggunakan pemesanan A, distribusi slotnya adalah sebagai berikut:

  • Project A menerima 500 slot, dan kueri A berjalan dengan 500 slot.
  • Project B menerima 500 slot yang digunakan bersama di antara 20 kuerinya.

Skenario 2: Di project A, Anda menjalankan kueri A (satu kueri serentak) yang memerlukan 100 slot untuk dijalankan, dan di project B Anda menjalankan 20 kueri serentak. Karena kueri A tidak memerlukan 50% reservasi, maka distribusi slotnya adalah sebagai berikut:

  • Project A menerima 100 slot, dan kueri A berjalan dengan 100 slot.
  • Project B menerima 900 slot yang dibagikan di antara 20 kuerinya.

Sebaliknya, pertimbangkan konfigurasi pemesanan berikut:

  • Pemesanan B, yang memiliki 1.000 slot dasar pengukuran tanpa penskalaan otomatis.
  • 10 project, yang semuanya ditetapkan ke pemesanan B.

Dengan asumsi 10 project menjalankan kueri yang memiliki permintaan slot yang memadai, setiap project akan menerima 1/10 dari total slot reservasi (atau 100 slot), terlepas dari jumlah kueri yang berjalan di setiap project.

Kuota dan batas slot

Kuota dan batas slot memberikan perlindungan untuk BigQuery. Model harga yang berbeda menggunakan jenis kuota slot yang berbeda, sebagai berikut:

  • Model harga on demand: Anda tunduk pada batas slot serentak maksimum untuk harga on demand dengan kemampuan burst sementara. Bergantung pada workload Anda, akses ke lebih banyak slot dapat meningkatkan performa kueri.

  • Model harga berbasis kapasitas: Kuota dan batas pemesanan menentukan jumlah maksimum slot yang dapat Anda alokasikan di semua pemesanan di suatu lokasi. Jika Anda menggunakan penskalaan otomatis, jumlah ukuran pemesanan maksimum tidak boleh melebihi batas ini. Anda hanya akan ditagih untuk pemesanan dan komitmen, bukan untuk kuota. Untuk informasi tentang cara meningkatkan kuota slot, lihat Meminta penambahan kuota.

Perhatikan perbedaan antara slot yang dialokasikan (yang memengaruhi kuota dan penagihan) dan slot yang digunakan (yang merepresentasikan komputasi aktif). Untuk perbandingan mendetail antara keduanya, lihat Memahami metrik slot.

Untuk memeriksa jumlah slot yang Anda gunakan, lihat Pemantauan BigQuery.

Slot yang tidak ada aktivitas

Konsep slot tidak ada aktivitas hanya berlaku dalam model harga berbasis kapasitas dan tidak berlaku untuk slot yang diskalakan otomatis. Slot dianggap "tidak ada aktivitas" dalam dua skenario:

  • Slot dari komitmen yang tidak dialokasikan ke dasar pengukuran pemesanan apa pun.
  • Slot yang dialokasikan ke dasar pengukuran pemesanan, tetapi tidak digunakan secara aktif oleh tugas dalam pemesanan tersebut.

Untuk memaksimalkan nilai dan efisiensi kapasitas yang Anda beli, BigQuery dirancang untuk otomatis membagikan slot yang tidak digunakan ini. Secara default, kueri yang berjalan di pemesanan mana pun dapat menggunakan slot tidak ada aktivitas dari pemesanan lain dalam project administrasi yang sama.

Saat pemesanan yang "memiliki" slot tersebut membutuhkannya untuk suatu tugas, BigQuery akan segera mengklaimnya kembali. Pengembalian slot yang dipinjam terjadi dengan lancar dalam beberapa milidetik untuk memastikan workload pemesanan yang memiliki slot tidak terpengaruh. Selama penyerahan singkat ini, Anda mungkin melihat di diagram pemantauan bahwa total konsumsi slot melebihi total kapasitas Anda di semua pemesanan. Hal ini merupakan artefak normal dan yang diharapkan dari proses pengambilalihan dan alokasi slot, dan Anda tidak akan ditagih untuk penggunaan tambahan sementara ini.

Misalnya, anggaplah Anda memiliki penyiapan reservasi berikut:

  • project_a ditetapkan ke reservation_a, yang memiliki 500 slot dasar pengukuran tanpa penskalaan otomatis.
  • project_b ditetapkan ke reservation_b, yang memiliki 100 slot dasar pengukuran tanpa penskalaan otomatis.
  • Kedua pemesanan berada di region dan project administratif yang sama, dan tidak ada project lain yang ditetapkan ke pemesanan ini.

Anda menjalankan query_b di project_b. Jika tidak ada kueri yang berjalan di project_a, maka query_b memiliki akses ke 500 slot tidak aktif dari reservation_a. Saat query_b masih berjalan, dapat menggunakan hingga 600 slot: 100 slot dasar pengukuran ditambah 500 slot tidak ada aktivitas.

Saat query_b berjalan, misalkan Anda menjalankan query_a di project_a yang dapat menggunakan 500 slot.

  • Karena Anda memiliki 500 slot dasar pengukuran yang dicadangkan untuk project_a, query_a akan segera dimulai dan dialokasikan 500 slot.
  • Jumlah slot yang dialokasikan ke query_b dengan cepat berkurang menjadi 100 slot dasar pengukuran.
  • Kueri tambahan yang dijalankan di project_b akan berbagi 100 slot tersebut. Jika kueri berikutnya tidak memiliki cukup slot untuk dimulai, kueri tersebut akan diantrekan hingga kueri yang sedang berjalan selesai dan slot tersedia.

Dalam contoh ini, jika project_b ditetapkan ke pemesanan tanpa slot dasar pengukuran atau penskalaan otomatis, query_b tidak akan memiliki slot setelah query_a mulai berjalan. BigQuery akan menjeda query_b hingga slot tidak ada aktivitas tersedia atau waktu tunggu kueri habis. Kueri tambahan di project_b akan dimasukkan ke dalam antrean hingga slot tidak ada aktivitas tersedia.

Mengontrol dan membatasi berbagi slot tidak ada aktivitas

Untuk mencegah pemesanan tertentu meminjam slot tidak ada aktivitas dari pemesanan lain, tetapkan properti ignore_idle_slots ke true. Perhatikan bahwa setelan ini hanya mengontrol peminjaman, bukan pemberian pinjaman. Reservasi dengan ignore_idle_slots yang ditetapkan ke benar tidak dapat lagi meminjam kapasitas, tetapi masih dapat meminjamkan slot tidak ada aktivitasnya sendiri ke reservasi lain yang membutuhkannya. Selama ignore_idle_slots salah, pemesanan dapat memiliki jumlah slot sebesar 0 dan masih memiliki akses ke slot yang tidak digunakan.

Selain ignore_idle_slots, Anda dapat menggunakan mekanisme berikut untuk mengelola dan mengontrol pembagian slot tidak aktif di seluruh workload Anda:

  • Keadilan berbasis pemesanan: Mendistribusikan slot yang tidak ada aktivitas secara merata di seluruh pemesanan, bukan project individual, sehingga mencegah workload multi-project memonopoli kumpulan slot yang tidak ada aktivitas. Untuk mengaktifkan setelan ini, lihat Mengaktifkan keadilan berbasis pemesanan.
  • Pemesanan yang dapat diprediksi: Menetapkan batas kapasitas maksimum saat menggunakan kapasitas (termasuk slot tidak ada aktivitas), sehingga memastikan penskalaan resource yang dapat diprediksi tanpa lonjakan yang tidak terduga. Untuk mengetahui langkah-langkah konfigurasi, lihat Membuat pemesanan yang dapat diprediksi.
  • Grup reservasi: Mengelompokkan reservasi terkait untuk membatasi total penggunaan slot di seluruh grup dan memprioritaskan berbagi slot tidak aktif dalam grup sebelum berbagi di seluruh organisasi. Untuk menyiapkan grup, lihat Membuat grup reservasi.

Ada dua batasan utama terkait berbagi slot tidak aktif:

  • Anda tidak dapat berbagi slot yang tidak ada aktivitasnya di antara pemesanan dari berbagai edisi.
  • Penetapan jenis ML_EXTERNAL merupakan pengecualian karena slot yang digunakan oleh tugas pembuatan model eksternal BigQuery ML tidak dapat dihentikan. Slot dalam pemesanan dengan jenis penetapan ML_EXTERNAL dan QUERY hanya tersedia untuk tugas kueri lainnya jika slot tidak ditempati oleh tugas ML_EXTERNAL. Selain itu, tugas-tugas ini tidak dapat menggunakan slot tidak ada aktivitas dari pemesanan lain.

Keadilan berbasis reservasi

Dengan keadilan berbasis pemesanan, BigQuery memprioritaskan dan mengalokasikan slot tidak ada aktivitas secara merata di semua pemesanan dalam project admin yang sama, terlepas dari jumlah project yang menjalankan tugas di setiap pemesanan. Setiap pemesanan menerima bagian yang sama dari kapasitas yang tersedia di kumpulan slot tidak ada aktivitas, lalu slotnya didistribusikan secara adil dalam project-nya. Fitur ini hanya didukung dengan edisi Enterprise atau Enterprise Plus.

Diagram berikut menunjukkan cara slot tidak ada aktivitas didistribusikan tanpa mengaktifkan keadilan berbasis pemesanan:

Slot tidak ada aktivitas dibagikan di seluruh project.

Dalam diagram ini, slot tidak ada aktivitas dibagikan secara merata di seluruh project.

Tanpa mengaktifkan keadilan berbasis pemesanan, slot tidak ada aktivitas yang tersedia akan didistribusikan secara merata di seluruh project dalam pemesanan.

Diagram berikut menunjukkan cara slot tidak ada aktivitas didistribusikan dengan pengaktifan keadilan berbasis reservasi:

Slot tidak ada aktivitas dibagikan di seluruh pemesanan.

Dalam diagram ini, slot tidak aktif dibagikan secara merata di seluruh pemesanan, bukan project.

Jika keadilan berbasis pemesanan diaktifkan, slot tidak ada aktivitas yang tersedia akan didistribusikan secara merata ke seluruh pemesanan.

Saat Anda mengaktifkan keadilan berbasis pemesanan, tinjau pemakaian resource Anda untuk mengelola ketersediaan slot dan performa kueri.

Hindari mengandalkan slot tidak ada aktivitas saja untuk workload produksi dengan persyaratan waktu yang ketat - tugas ini harus menggunakan slot dasar pengukuran atau penskalaan otomatis. Sebaiknya gunakan slot tidak ada aktivitas untuk tugas dengan prioritas lebih rendah karena slot dapat di-preempt kapan saja.

Penskalaan otomatis slot

Bagian berikut membahas slot penskalaan otomatis dan cara kerjanya dengan pemesanan.

Menggunakan reservasi penskalaan otomatis

Anda tidak perlu membeli komitmen slot sebelum membuat reservasi penskalaan otomatis. Komitmen slot memberikan tarif diskon untuk slot yang digunakan secara konsisten, tetapi bersifat opsional dengan reservasi penskalaan otomatis. Untuk membuat reservasi penskalaan otomatis, Anda menetapkan jumlah slot maksimum ke reservasi (ukuran reservasi maksimum). Anda dapat mengidentifikasi jumlah maksimum slot penskalaan otomatis dengan mengurangi ukuran reservasi maksimum dengan slot dasar pengukuran opsional yang ditetapkan untuk reservasi.

Saat Anda membuat pemesanan penskalaan otomatis, pertimbangkan hal-hal berikut:

  • BigQuery menskalakan pemesanan hampir secara instan hingga mencapai jumlah slot yang diperlukan untuk menjalankan tugas, atau mencapai jumlah maksimum slot yang tersedia untuk pemesanan. Slot selalu melakukan penskalaan otomatis ke kelipatan 50.
  • Tidak seperti slot dasar pengukuran, BigQuery tidak mencadangkan slot penskalaan otomatis di awal. Kapasitas ini, yang menjembatani slot dasar pengukuran dan ukuran pemesanan maksimum, bergantung pada ketersediaan sistem saat ini. Selama periode permintaan tinggi, batasan kapasitas mungkin menunda peningkatan skala.
  • Peningkatan skala didasarkan pada penggunaan sebenarnya, dan dibulatkan ke kenaikan 50 slot terdekat.
  • Slot yang diskalakan otomatis akan dikenai biaya berdasarkan harga komputasi kapasitas untuk edisi terkait saat meningkatkan skalanya. Anda dikenai biaya untuk jumlah slot yang diskalakan, bukan jumlah slot yang digunakan. Biaya ini berlaku meskipun tugas yang menyebabkan BigQuery melakukan peningkatan skala gagal. Oleh karena itu, jangan menggunakan skema informasi tugas untuk mencocokkan penagihan. Sebagai gantinya, lihat Memantau penskalaan otomatis dengan skema informasi.
  • Meskipun jumlah slot selalu diskalakan dengan kelipatan 50, jumlah slot dapat diskalakan lebih dari 50 slot dalam satu langkah. Misalnya, jika workload Anda memerlukan 450 slot tambahan, BigQuery dapat mencoba menskalakan sebanyak 450 slot sekaligus untuk memenuhi persyaratan kapasitas.
  • BigQuery memperkecil skala saat tugas yang terkait dengan pemesanan tidak lagi memerlukan kapasitas. Secara default, kapasitas ditagih per detik dengan durasi minimum satu menit. Anda dapat mengaktifkan penskalaan fleksibel BigQuery di tingkat reservasi untuk penagihan per detik tanpa durasi minimum.

Setiap kapasitas yang diskalakan otomatis dipertahankan selama minimal 60 detik. Periode 60 detik ini disebut periode penurunan skala. Setiap puncak kapasitas baru akan mereset jendela penurunan skala, sehingga memperlakukan seluruh tingkat kapasitas sebagai pemberian baru. Namun, jika 60 detik atau lebih telah berlalu sejak peningkatan kapasitas terakhir dan permintaan lebih rendah, sistem akan mengurangi kapasitas tanpa mereset periode perkecil skala, sehingga memungkinkan penurunan berturut-turut tanpa penundaan.

Misalnya, jika kapasitas workload awal Anda diskalakan ke 100 slot, puncaknya akan dipertahankan setidaknya selama 60 detik. Jika, selama periode perkecil skala tersebut, beban kerja Anda diskalakan ke puncak baru sebesar 200 slot, periode perkecil skala baru akan dimulai selama 60 detik. Jika tidak ada puncak baru selama periode penurunan skala ini, workload Anda akan mulai memperkecil skala di akhir periode 60 detik.

Pertimbangkan contoh mendetail berikut: Pada pukul 12.00.00, kapasitas awal Anda diskalakan menjadi 100 slot dan penggunaan berlangsung selama satu detik. Puncak tersebut dipertahankan selama minimal 60 detik, mulai pukul 12.00.00. Setelah 60 detik berlalu (pada pukul 12.01.01), jika penggunaan baru adalah 50 slot, BigQuery akan menurunkan skala menjadi 50 slot. Jika, pada pukul 12:01:02, penggunaan baru adalah 0 slot, BigQuery akan segera memperkecil skala ke 0 slot. Setelah periode perkecil skala berakhir, BigQuery dapat memperkecil skala beberapa kali secara berturut-turut tanpa memerlukan periode perkecil skala baru.

Penskalaan fleksibel BigQuery

Penskalaan fleksibel BigQuery menghilangkan durasi minimum satu menit yang diperlukan oleh penskalaan otomatis standar, dan menyesuaikan kapasitas slot Anda dari detik ke detik. Fitur ini tidak mengubah penambahan penskalaan 50 slot.

Untuk menyesuaikan dengan cepat permintaan pemesanan, penskalaan fleksibel BigQuery memengaruhi distribusi berbagi slot tidak aktif antar-pemesanan dalam jangka waktu singkat, sehingga menghasilkan slot tidak aktif yang diberikan sedikit lebih banyak atau lebih sedikit daripada pembagian yang adil untuk pemesanan.

Untuk mengetahui petunjuk cara mengaktifkan fitur ini, lihat Memperbarui pemesanan.

Untuk pemesanan yang menggunakan disaster recovery terkelola, penskalaan fleksibel BigQuery harus diaktifkan di region utama dan sekunder untuk memastikan penagihan per detik setelah failover.

Untuk mempelajari cara menggunakan penskalaan otomatis, lihat Mengelola pemesanan workload.

Menggunakan reservasi dengan slot dasar pengukuran dan penskalaan otomatis

Selain menentukan ukuran reservasi maksimum, Anda dapat secara opsional menentukan jumlah slot dasar pengukuran per reservasi. Dasar pengukuran adalah jumlah minimum slot yang akan selalu dialokasikan ke reservasi, dan Anda akan selalu dikenai biaya untuk slot tersebut. Slot penskalaan otomatis hanya ditambahkan setelah semua slot dasar pengukuran (dan slot tidak ada aktivitas jika ada) digunakan. Anda dapat membagikan slot dasar pengukuran tidak ada aktivitas di satu reservasi dengan reservasi lain yang memerlukan kapasitas.

Anda dapat meningkatkan jumlah slot dasar pengukuran dalam reservasi setiap beberapa menit, asalkan BigQuery memiliki kapasitas yang tersedia saat Anda membuat permintaan. Jika ingin mengurangi slot dasar pengukuran, Anda dibatasi sekali per jam jika baru-baru ini mengubah kapasitas slot dasar pengukuran dan slot dasar pengukuran melebihi slot yang di-commit. Jika tidak, Anda dapat mengurangi slot dasar pengukuran setiap beberapa menit.

Slot dasar pengukuran dan penskalaan otomatis ditujukan untuk menyediakan kapasitas berdasarkan workload terbaru Anda. Jika Anda mengantisipasi workload yang sangat besar, sebaiknya tingkatkan kapasitas dasar pengukuran jauh sebelum peristiwa tersebut, daripada mengandalkan slot penskalaan otomatis. Karena peningkatan baseline bergantung pada ketersediaan kapasitas BigQuery, perencanaan lebih awal memberi Anda peluang terbaik untuk mengamankan slot yang Anda butuhkan. Jika permintaan Anda untuk meningkatkan kapasitas gagal, tunggu 15 menit dan coba lagi.

Jika reservasi tidak memiliki slot dasar pengukuran atau tidak dikonfigurasi untuk meminjam slot tidak ada aktivitas dari reservasi lain, BigQuery akan mencoba melakukan penskalaan. Jika tidak, slot dasar pengukuran harus digunakan sepenuhnya sebelum penskalaan.

Reservasi menggunakan dan menambahkan slot dalam prioritas berikut:

  1. Slot dasar pengukuran.
  2. Berbagi slot tidak ada aktivitas (jika diaktifkan). Pemesanan hanya dapat membagikan slot dasar pengukuran atau slot yang di-commit yang tidak ada aktivitas dari pemesanan lain yang dibuat dengan edisi dan region yang sama.
  3. Slot penskalaan otomatis.

Dalam contoh berikut, slot diskalakan dari jumlah dasar pengukuran yang ditentukan. Reservasi etl dan dashboard memiliki ukuran dasar 700 dan 300 slot.

Contoh penskalaan otomatis tanpa komitmen.

Dalam contoh ini, reservasi etl dapat diskalakan hingga 1.300 slot (700 slot dasar pengukuran ditambah 600 slot penskalaan otomatis). Jika reservasi dashboard tidak digunakan, reservasi etl dapat menggunakan 300 slot dari reservasi dashboard jika tidak ada tugas yang berjalan di sana, sehingga menghasilkan maksimum 1.600 slot potensial.

Reservasi dashboard dapat diskalakan hingga 1.100 slot (300 slot dasar pengukuran ditambah 800 slot penskalaan otomatis). Jika reservasi etl benar-benar tidak ada aktivitas, reservasi dashboard dapat diskalakan hingga maksimum 1.800 slot (300 slot dasar pengukuran ditambah 800 slot penskalaan otomatis ditambah 700 slot tidak ada aktivitas di reservasi etl ).

Jika reservasi etl memerlukan lebih dari 700 slot dasar pengukuran yang selalu tersedia, reservasi akan mencoba menambahkan slot menggunakan metode berikut secara berurutan:

  1. 700 slot dasar pengukuran.
  2. Berbagi slot tidak ada aktivitas dengan 300 slot dasar pengukuran di reservasi dashboard. Pemesanan Anda hanya membagikan slot dasar pengukuran tidak ada aktivitas dengan pemesanan lain yang dibuat dengan edisi yang sama.
  3. Meningkatkan skala 600 slot tambahan ke ukuran reservasi maksimum.

Menggunakan komitmen slot

Contoh berikut menampilkan penskalaan otomatis slot menggunakan komitmen kapasitas.

Reservasi penskalaan otomatis dengan komitmen kapasitas.

Seperti dasar pengukuran reservasi, komitmen slot memungkinkan Anda mengalokasikan jumlah slot tetap yang tersedia untuk semua reservasi. Tidak seperti slot dasar pengukuran, komitmen tidak dapat dikurangi selama jangka waktu yang ditentukan. Komitmen slot bersifat opsional, tetapi dapat menghemat biaya jika slot dasar pengukuran diwajibkan untuk jangka waktu yang lama. Komitmen slot digunakan untuk mencakup slot dasar pengukuran untuk pemesanan Anda. Kapasitas slot yang tidak digunakan kemudian dibagikan sebagai slot tidak ada aktivitas di seluruh reservasi lainnya. Komitmen slot tidak berlaku untuk slot penskalaan otomatis. Untuk memastikan Anda menerima tarif diskon untuk slot yang di-commit, pastikan komitmen slot Anda cukup untuk mencakup slot dasar pengukuran.

Dalam contoh ini, Anda akan dikenai tarif standar untuk slot komitmen kapasitas. Anda akan ditagih berdasarkan tarif penskalaan otomatis untuk jumlah slot penskalaan otomatis setelah penskalaan otomatis diaktifkan dan reservasi dalam status ditingkatkan skalanya. Untuk tarif penskalaan otomatis, Anda akan ditagih untuk jumlah slot yang diskalakan, bukan jumlah slot yang digunakan.

Contoh berikut menunjukkan reservasi saat jumlah slot dasar pengukuran melebihi jumlah slot yang di-commit.

Slot dasar melebihi jumlah slot komitmen.

Dalam contoh ini, ada total 1.000 slot dasar pengukuran di antara dua reservasi, 500 dari reservasi etl dan 500 dari reservasi dashboard. Namun, komitmen hanya mencakup 800 slot. Dalam skenario ini, slot tambahan akan ditagih dengan tarif bayar sesuai penggunaan (PAYG).

Slot maksimum yang tersedia

Anda dapat menghitung jumlah maksimum slot yang dapat digunakan oleh reservasi dengan menambahkan slot dasar pengukuran, jumlah maksimum slot penskalaan otomatis, dan slot apa pun dalam komitmen yang dibuat dengan edisi yang sama dan tidak tercakup oleh slot dasar pengukuran. Contoh berikut disiapkan sebagai berikut:

Reservasi penskalaan otomatis dengan komitmen kapasitas.

  • Komitmen kapasitas 1.000 slot tahunan. Slot tersebut ditetapkan sebagai slot dasar pengukuran pada reservasi etl dan reservasi dashboard.
  • 700 slot dasar pengukuran ditetapkan ke reservasi etl.
  • 300 slot dasar pengukuran ditetapkan ke reservasi dashboard.
  • Penskalaan otomatis slot 600 untuk reservasi etl.
  • Penskalaan otomatis slot 800 untuk reservasi dashboard.

Untuk reservasi etl, jumlah maksimum slot yang memungkinkan sama dengan slot dasar pengukuran etl (700) ditambah slot dasar pengukuran dashboard (300, jika semua slot tidak ada aktivitas) ditambah jumlah maksimum slot penskalaan otomatis (600). Jadi, jumlah maksimum slot yang dapat digunakan reservasi etl dalam contoh ini adalah 1.600. Jumlah ini melebihi jumlah dalam komitmen kapasitas.

Pada contoh berikut, komitmen tahunan melebihi slot dasar pengukuran yang ditetapkan.

Cara menghitung slot maksimum yang tersedia dalam reservasi.

Dalam contoh ini, kita memiliki:

  • Komitmen kapasitas sebanyak 1.600 slot tahunan.
  • Ukuran reservasi maksimum 1.500 (termasuk 500 slot penskalaan otomatis).
  • 1.000 slot dasar pengukuran ditetapkan ke reservasi etl.

Jumlah maksimum slot yang tersedia untuk reservasi sama dengan slot dasar pengukuran (1.000) ditambah slot tidak ada aktivitas yang di-commit dan tidak dikhususkan untuk slot dasar pengukuran (1.600 slot tahunan - 1.000 slot dasar pengukuran = 600) ditambah jumlah slot penskalaan otomatis (500). Jadi slot potensial maksimum dalam reservasi ini adalah 2.100. Slot yang diskalakan otomatis adalah slot tambahan di atas komitmen kapasitas.

BigQuery terkadang dapat menggunakan kapasitas sistem BigQuery yang tersedia untuk memproses kueri Anda lebih cepat daripada yang biasanya diizinkan oleh batas slot Anda. Jika hal ini terjadi, BigQuery akan menunda menampilkan hasil kueri akhir Anda hingga kapasitas slot standar Anda mencakup lonjakan penggunaan, sehingga Anda tidak pernah ditagih melebihi batas Anda sekaligus tetap memperhitungkan total komputasi yang digunakan.

Praktik terbaik penskalaan otomatis

  • Saat pertama kali menggunakan autoscaler, tetapkan jumlah slot penskalaan otomatis ke jumlah yang signifikan berdasarkan performa sebelumnya dan yang diperkirakan. Setelah reservasi dibuat, pantau secara aktif tingkat kegagalan, performa, dan tagihan, serta sesuaikan jumlah slot penskalaan otomatis berdasarkan kebutuhan.

  • Autoscaler memiliki minimum 1 menit sebelum menurunkan skala, jadi penting untuk menetapkan jumlah maksimum slot yang diskalakan otomatis untuk menyeimbangkan performa dan biaya. Jika jumlah maksimum slot penskalaan otomatis terlalu besar dan tugas Anda dapat menggunakan semua slot untuk menyelesaikan tugas dalam hitungan detik, Anda tetap akan dikenai biaya untuk slot maksimum selama satu menit penuh. Jika Anda menurunkan slot maksimum menjadi setengah dari jumlah saat ini, reservasi Anda akan diskalakan ke jumlah yang lebih rendah dan tugas dapat menggunakan lebih banyak slot_seconds selama satu menit tersebut, sehingga mengurangi pemborosan. Untuk mendapatkan bantuan dalam menentukan persyaratan slot, lihat Memantau performa tugas. Sebagai pendekatan alternatif untuk menentukan persyaratan slot, lihat Melihat rekomendasi slot edisi.

  • Penggunaan slot terkadang dapat melebihi jumlah slot dasar ditambah slot yang diskalakan. Anda tidak akan ditagih untuk penggunaan slot yang lebih besar dari slot dasar ditambah slot yang diskalakan.

  • Autoscaler paling efisien untuk workload yang berat dan berjalan lama, seperti workload dengan beberapa kueri serentak. Hindari mengirim kueri satu per satu, karena setiap kueri akan menskalakan pemesanan dan akan tetap diskalakan selama minimal 1 menit. Jika Anda terus mengirim kueri, sehingga menyebabkan workload yang konstan, menetapkan dasar pengukuran dan membeli komitmen akan memberikan kapasitas konstan dengan harga diskon.

  • Penskalaan otomatis BigQuery bergantung pada ketersediaan kapasitas. BigQuery berupaya memenuhi permintaan kapasitas pelanggan berdasarkan penggunaan historis. Anda dapat menetapkan dasar pengukuran slot opsional sehingga slot langsung tersedia. Dengan dasar pengukuran, Anda membayarnya, baik Anda menggunakannya atau tidak. Guna memastikan kapasitas tersedia untuk permintaan non-organik yang besar, seperti liburan dengan traffic yang tinggi, hubungi tim BigQuery beberapa minggu sebelumnya.

  • Slot dasar pengukuran selalu ditagih. Jika komitmen kapasitas berakhir, Anda mungkin perlu menyesuaikan jumlah slot dasar pengukuran dalam reservasi secara manual untuk menghindari tagihan yang tidak diinginkan. Misalnya, pertimbangkan bahwa Anda memiliki komitmen 1 tahun dengan 100 slot dan pemesanan dengan 100 slot dasar pengukuran. Komitmen akan berakhir dan tidak memiliki paket perpanjangan. Setelah komitmen berakhir, Anda membayar 100 slot dasar dengan tarif bayar sesuai penggunaan.

Kemampuan observasi

Untuk mengetahui informasi tentang cara memantau penggunaan slot dan performa tugas dengan penskalaan otomatis, lihat Memantau penskalaan otomatis.