Memahami slot

Slot BigQuery adalah unit komputasi virtual yang digunakan BigQuery untuk menjalankan kueri SQL, kode Python, atau jenis tugas 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.

Harga sesuai permintaan dan berbasis kapasitas

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

Secara default, Anda 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 per project dan per organisasi dengan kemampuan burst sementara. Sebagian besar pengguna pada model on demand menganggap batas kapasitas slot lebih dari cukup. Namun, bergantung pada workload, 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 reservasi. 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 reservasi berdasarkan performa atau sifat penting workload yang menggunakan reservasi.

Eksekusi kueri menggunakan slot

Saat menjalankan tugas kueri, BigQuery akan mengonversi pernyataan SQL menjadi rencana eksekusi, yang terdiri dari serangkaian tahap kueri. Tahap pada gilirannya terdiri dari serangkaian langkah eksekusi. BigQuery menggunakan arsitektur paralel terdistribusi untuk menjalankan kueri. Tahapan 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. Paket kueri dapat diubah saat kueri sedang diproses. Distribusi tugas dapat dioptimalkan untuk distribusi data saat tahapan ditambahkan. 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 akan Anda gunakan, 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 dikenal sebagai persaingan slot. Persaingan slot dapat meningkat jika permintaan workload jauh lebih besar daripada slot yang tersedia untuk reservasi.

Prioritas kapasitas

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

  1. Dasar dan kapasitas yang di-commit edisi Enterprise Plus dan Enterprise.
  2. Kapasitas penskalaan otomatis Enterprise Plus.
  3. Kapasitas yang diskalakan otomatis edisi Enterprise.
  4. Edisi standar dan kapasitas on-demand.

Jika terjadi persaingan di suatu region, permintaan kapasitas on-demand dan edisi Standar 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 scheduler adalah untuk menemukan keseimbangan antara mengeluarkan tugas yang berjalan secara agresif (yang menyebabkan pemborosan waktu slot) dan yang terlalu longgar (yang menyebabkan tugas dengan tugas yang berjalan lama untuk mendapatkan pembagian waktu slot yang tidak proporsional).

Penjadwalan yang 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:

  • Reservasi A, yang memiliki 1.000 slot dasar pengukuran tanpa penskalaan otomatis
  • Project A dan project B, yang ditetapkan ke reservasi 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 A pemesanan, distribusi slotnya adalah sebagai berikut:

  • Project A menerima 500 slot, dan kueri A berjalan dengan 500 slot.
  • Project B menerima 500 slot yang dibagikan 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 reservasi berikut:

  • Reservasi 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 penetapan harga yang berbeda menggunakan jenis kuota slot yang berbeda, sebagai berikut:

  • Model harga on demand: Anda tunduk pada batas slot per project dan organisasi dengan kemampuan burst sementara. Bergantung pada workload Anda, akses ke lebih banyak slot dapat meningkatkan performa kueri.

  • Model harga berbasis kapasitas: Kuota dan batas reservasi menentukan jumlah maksimum slot yang dapat Anda alokasikan di semua reservasi di suatu lokasi. Jika Anda menggunakan penskalaan otomatis, jumlah ukuran reservasi 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.

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

Slot yang tidak ada aktivitas

Pada waktu tertentu, beberapa slot mungkin tidak ada aktivitas. Hal ini dapat mencakup:

  • Komitmen slot yang tidak dialokasikan ke dasar pengukuran pemesanan apa pun.
  • Slot yang dialokasikan ke dasar pengukuran pemesanan, tetapi tidak digunakan.

Slot tidak aktif tidak berlaku saat menggunakan model harga sesuai permintaan.

Secara default, kueri yang berjalan di pemesanan akan otomatis menggunakan slot yang tidak ada aktivitas dari pemesanan lain dalam project administrasi dan region yang sama. BigQuery segera mengalokasikan slot tidak ada aktivitas ke pemesanan yang ditetapkan saat diperlukan. Slot tidak ada aktivitas yang digunakan oleh pemesanan lain akan segera dihentikan sementara jika diperlukan oleh pemesanan asli. Mungkin ada waktu singkat saat Anda melihat total penggunaan slot melebihi maksimum yang Anda tentukan di semua reservasi, tetapi Anda tidak akan ditagih untuk penggunaan slot tambahan 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 berlari 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, query_b dapat menggunakan hingga 600 slot: 100 slot dasar pengukuran ditambah 500 slot tidak aktif.

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 untuk query_b akan berkurang dengan cepat menjadi 100 slot dasar pengukuran.
  • Kueri tambahan yang dijalankan di project_b 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 reservasi tanpa slot dasar pengukuran atau penskalaan otomatis, maka query_b tidak akan memiliki slot setelah query_a mulai berjalan. BigQuery akan menjeda query_b hingga slot tidak aktif tersedia atau kueri mencapai waktu tunggu habis. Kueri tambahan di project_b akan dimasukkan ke dalam antrean hingga slot tidak ada aktivitas tersedia.

Untuk memastikan pemesanan hanya menggunakan slot yang disediakan, tetapkan ignore_idle_slots ke true. Namun, reservasi dengan ignore_idle_slots yang ditetapkan ke true dapat membagikan slot yang tidak ada aktivitasnya kepada reservasi lain.

Anda tidak dapat berbagi slot yang tidak ada aktivitasnya di antara pemesanan dari berbagai edisi. Anda hanya dapat membagikan slot dasar pengukuran atau slot yang di-commit. Slot yang diskalakan otomatis mungkin tersedia untuk sementara, tetapi tidak dapat dibagikan sebagai slot tidak ada aktivitas untuk pemesanan lain karena dapat diperkecil skalanya.

Selama ignore_idle_slots salah, pemesanan dapat memiliki jumlah slot sebesar 0 dan masih memiliki akses ke slot yang tidak digunakan. Jika Anda hanya menggunakan pemesanan default, nonaktifkan ignore_idle_slots sebagai praktik terbaik. Selanjutnya, Anda dapat menetapkan project atau folder ke pemesanan tersebut, dan pemesanan itu hanya akan menggunakan slot yang tidak ada aktivitas.

Penetapan jenis ML_EXTERNAL adalah 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 ini tidak dapat menggunakan slot tidak ada aktivitas dari pemesanan lain.

Keadilan berbasis reservasi

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

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

Slot tidak aktif dibagikan di seluruh project.

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

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

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

Slot yang tidak ada aktivitasnya dibagikan di seluruh pemesanan.

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

Dengan mengaktifkan keadilan berbasis reservasi, slot tidak ada aktivitas yang tersedia didistribusikan secara merata di seluruh reservasi.

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

Hindari mengandalkan slot tidak aktif 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 berprioritas lebih rendah karena slot dapat didahului kapan saja.

Penskalaan otomatis slot

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

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 reservasi penskalaan otomatis, pertimbangkan hal berikut:

  • BigQuery menskalakan reservasi hampir secara instan hingga mencapai jumlah slot yang diperlukan untuk menjalankan tugas, atau mencapai jumlah maksimum slot yang tersedia untuk reservasi. Slot selalu melakukan penskalaan otomatis ke kelipatan 50.
  • Penskalaan ke atas 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 penskalaan gagal. Oleh karena itu, jangan gunakan skema informasi tugas untuk mencocokkan penagihan. Sebagai gantinya, lihat Memantau penskalaan otomatis dengan skema informasi.
  • Meskipun jumlah slot selalu diskalakan dengan kelipatan 50, contoh ini dapat menskalakan 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 akan menurunkan skala jika tugas yang terkait dengan reservasi tidak lagi memerlukan kapasitas (tunduk pada minimum 1 menit).

Kapasitas yang diskalakan otomatis dipertahankan selama minimal 60 detik. Periode 60 detik ini disebut periode penurunan skala. Setiap puncak kapasitas baru akan mereset periode pengurangan skala, dan 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 penurunan skala, sehingga memungkinkan penurunan berturut-turut tanpa penundaan.

Misalnya, jika kapasitas workload awal Anda diskalakan menjadi 100 slot, puncak akan dipertahankan selama minimal 60 detik. Jika, selama periode pengurangan skala tersebut, workload Anda diskalakan ke puncak baru 200 slot, periode pengurangan skala baru akan dimulai selama 60 detik. Jika tidak ada puncak baru selama periode penurunan skala ini, workload Anda akan mulai diturunkan skalanya di akhir 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 setidaknya selama 60 detik, dimulai pada pukul 12.00.00. Setelah 60 detik berlalu (pada 12.01.01), jika penggunaan baru adalah 50 slot, BigQuery akan menurunkan skala menjadi 50 slot. Jika, pada 12.01.02, penggunaan baru adalah 0 slot, BigQuery akan segera menurunkan skala kembali menjadi 0 slot. Setelah periode penurunan skala berakhir, BigQuery dapat menurunkan skala beberapa kali secara berturut-turut tanpa memerlukan periode penurunan skala baru.

Untuk mempelajari cara menggunakan penskalaan otomatis, lihat Menggunakan slot penskalaan otomatis.

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. 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 besar yang sangat berbeda dengan workload Anda sebelumnya, sebaiknya tingkatkan kapasitas dasar pengukuran sebelum peristiwa tersebut, daripada mengandalkan slot penskalaan otomatis untuk menutupi kapasitas workload. Jika Anda mengalami masalah saat meningkatkan kapasitas dasar, coba lagi permintaan setelah menunggu 15 menit.

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). Reservasi hanya dapat membagikan slot dasar pengukuran atau slot yang di-commit yang tidak ada aktivitas dari reservasi 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. Reservasi Anda hanya membagikan slot dasar pengukuran tidak ada aktivitas dengan reservasi 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 mendapatkan tarif diskon untuk slot yang di-commit, pastikan komitmen slot Anda cukup untuk mencakup slot dasar.

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 berkomitmen.

Slot dasar melebihi jumlah slot yang berkomitmen.

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 ini hanya mencakup 800 slot. Dalam skenario ini, slot tambahan dikenai biaya sesuai 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 dalam gambar sebelumnya disiapkan sebagai berikut:

  • 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.

Praktik terbaik penskalaan otomatis

  1. 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.

  2. 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 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 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.

  3. 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.

  4. 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 reservasi tempat kueri tersebut akan tetap diskalakan selama minimal 1 menit. Jika Anda terus mengirim kueri, yang menyebabkan beban kerja konstan, menetapkan dasar pengukuran dan membeli komitmen akan memberikan kapasitas konstan dengan harga diskon.

  5. Penskalaan otomatis BigQuery bergantung pada ketersediaan kapasitas. BigQuery berupaya memenuhi permintaan kapasitas pelanggan berdasarkan penggunaan historis. Untuk mencapai jaminan kapasitas, Anda dapat menetapkan dasar pengukuran slot opsional, yang merupakan jumlah slot yang dijamin dalam reservasi. Dengan dasar pengukuran, slot akan segera tersedia dan 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.

  6. 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, Anda memiliki komitmen 1 tahun dengan 100 slot dan pemesanan dengan 100 slot dasar pengukuran. Komitmen berakhir dan tidak memiliki rencana perpanjangan. Setelah komitmen berakhir, Anda akan membayar 100 slot dasar dengan tarif bayar sesuai penggunaan.

Memantau penskalaan otomatis

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

Penggunaan slot yang berlebihan

Jika tugas mempertahankan slot terlalu lama, tugas tersebut dapat menerima bagian slot yang tidak adil. Untuk mencegah penundaan, BigQuery memungkinkan tugas lain meminjam slot tambahan, sehingga menyebabkan periode penggunaan total slot di atas kapasitas slot yang Anda tentukan. Penggunaan slot berlebih hanya diatribusikan ke tugas yang menerima lebih dari bagian yang adil.

Slot tambahan tidak ditagih langsung kepada Anda. Sebagai gantinya, tugas akan terus berjalan dan mengakumulasi penggunaan slot sesuai dengan bagian yang adil hingga semua penggunaan berlebihnya tercakup oleh kapasitas yang dialokasikan. Slot berlebih dikecualikan dari penggunaan slot yang dilaporkan, kecuali untuk statistik eksekusi mendetail tertentu.

Perhatikan bahwa beberapa peminjaman slot secara antisipatif dapat terjadi untuk mengurangi penundaan di masa mendatang dan memberikan manfaat lain seperti berkurangnya variabilitas biaya slot dan berkurangnya latensi tail. Peminjaman slot terbatas pada sebagian kecil dari total kapasitas slot Anda.