Menggunakan pemesanan slot

BigQuery Reservation API memungkinkan Anda membeli slot khusus (disebut komitmen), membuat kumpulan slot (disebut reservasi), dan menetapkan project, folder, dan organisasi ke pemesanan tersebut.

Dengan pemesanan, Anda dapat menetapkan jumlah slot khusus untuk workload. Misalnya, Anda mungkin tidak ingin workload produksi bersaing dengan workload pengujian untuk slot. Anda dapat membuat pemesanan bernama prod dan menetapkan workload produksi ke pemesanan ini. Untuk mengetahui informasi lebih lanjut, lihat Pemesanan.

Membuat pemesanan

Izin yang diperlukan

Untuk membuat pemesanan, Anda memerlukan izin Identity and Access Management (IAM) berikut:

Setiap peran IAM berikut yang telah ditentukan sebelumnya menyertakan izin ini:

  • BigQuery Resource Editor
  • BigQuery Resource Admin

Untuk mengetahui informasi selengkapnya tentang peran IAM di BigQuery, lihat Peran dan izin yang telah ditentukan sebelumnya.

Membuat pemesanan dengan slot khusus

Pilih salah satu opsi berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel navigasi, buka bagian Capacity management, lalu klik Create reservation.

  3. Di kolom Nama pemesanan, masukkan nama untuk pemesanan.

  4. Di menu drop-down Lokasi, pilih lokasi. Jika Anda memilih lokasi BigQuery Omni, opsi edisi Anda akan terbatas untuk edisi Enterprise.

  5. Dalam daftar Edisi, pilih edisi. Fitur edisi BigQuery seperti penskalaan otomatis hanya tersedia dalam edisi. Untuk informasi selengkapnya, lihat Pengantar edisi BigQuery.

  6. Pada daftar Pemilih ukuran pemesanan maksimum, pilih ukuran pemesanan maksimum.

  7. Opsional: Di kolom Slot dasar pengukuran, masukkan jumlah slot dasar pengukuran untuk pemesanan.

    Jumlah slot penskalaan otomatis yang tersedia ditentukan dengan mengurangi nilai Slot dasar pengukuran dari Ukuran pemesanan maksimum. Misalnya, jika Anda membuat pemesanan dengan 100 slot dasar pengukuran dan ukuran pemesanan maksimum 400, pemesanan Anda memiliki 300 slot penskalaan otomatis. Untuk mengetahui informasi selengkapnya tentang slot dasar pengukuran, lihat Menggunakan pemesanan dengan slot dasar pengukuran dan penskalaan otomatis.

  8. Untuk menonaktifkan berbagi slot tidak ada aktivitas dan hanya menggunakan kapasitas slot yang ditentukan, klik tombol Abaikan slot tidak ada aktivitas.

  9. Untuk meluaskan bagian Advanced settings, klik panah peluas .

  10. Opsional: Untuk menetapkan konkurensi tugas target, klik tombol Ganti konkurensi tugas target otomatis ke aktif dan masukkan Konkurensi Tugas Target.

  11. Perincian slot ditampilkan di tabel Estimasi biaya. Ringkasan pemesanan ditampilkan di tabel Ringkasan kapasitas.

  12. Klik Simpan.

Pemesanan baru dapat dilihat di tab Pemesanan slot.

SQL

Untuk membuat pemesanan, gunakan pernyataan DDL CREATE RESERVATION.

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    OPTIONS (
      slot_capacity = NUMBER_OF_BASELINE_SLOTS,
      edition = EDITION,
      autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);

    Ganti kode berikut:

    • ADMIN_PROJECT_ID: project ID dari project administrasi yang memiliki resource pemesanan
    • LOCATION: lokasi pemesanan. Jika Anda memilih lokasi BigQuery Omni, opsi edisi Anda akan terbatas untuk edisi Enterprise.
    • RESERVATION_NAME: nama pemesanan

      Nama harus diawali dan diakhiri dengan huruf kecil atau angka, serta hanya berisi huruf kecil, angka, dan tanda hubung.

    • NUMBER_OF_BASELINE_SLOTS: dasar pengukuran jumlah slot yang akan dialokasikan ke reservasi. Anda tidak dapat menetapkan opsi slot_capacity dan opsi edition dalam pemesanan yang sama.
    • EDITION: edisi pemesanan. Penetapan pemesanan ke edisi disertai perubahan fitur dan harga. Untuk informasi selengkapnya, lihat Pengantar edisi BigQuery.
    • NUMBER_OF_AUTOSCALING_SLOTS: jumlah slot penskalaan otomatis yang ditetapkan untuk pemesanan. Nilai ini sama dengan nilai ukuran reservasi maksimum dikurangi jumlah slot dasar pengukuran.

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

bq

Untuk membuat pemesanan, gunakan perintah bq mk dengan flag --reservation:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation \
    --slots=NUMBER_OF_BASELINE_SLOTS \
    --ignore_idle_slots=false \
    --edition=EDITION \
    --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \
    RESERVATION_NAME

Ganti kode berikut:

  • ADMIN_PROJECT_ID: project ID
  • LOCATION: lokasi pemesanan. Jika Anda memilih lokasi BigQuery Omni, opsi edisi Anda akan terbatas untuk edisi Enterprise.
  • NUMBER_OF_BASELINE_SLOTS: jumlah slot dasar pengukuran yang akan dialokasikan ke reservasi

  • RESERVATION_NAME: nama pemesanan

  • EDITION: edisi pemesanan. Penetapan pemesanan ke edisi disertai perubahan fitur dan harga. Untuk informasi selengkapnya, lihat Pengantar edisi BigQuery.

  • NUMBER_OF_AUTOSCALING_SLOTS: jumlah slot penskalaan otomatis yang ditetapkan untuk pemesanan. Nilai ini sama dengan nilai ukuran reservasi maksimum dikurangi jumlah slot dasar pengukuran.

Untuk mengetahui informasi tentang flag --ignore_idle_slots, lihat Slot tidak ada aktivitas. Nilai defaultnya adalah false.

Terraform

Gunakan resource google_bigquery_reservation.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

Contoh berikut membuat reservasi bernama my-reservation:

resource "google_bigquery_reservation" "default" {
  name              = "my-reservation"
  location          = "us-central1"
  slot_capacity     = 100
  edition           = "ENTERPRISE"
  ignore_idle_slots = false # Use idle slots from other reservations
  concurrency       = 0     # Automatically adjust query concurrency based on available resources
  autoscale {
    max_slots = 200 # Allow the reservation to scale up to 300 slots (slot_capacity + max_slots) if needed
  }
}

Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.

    Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.

    Salin kode contoh ke dalam main.tf yang baru dibuat.

    Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade

Menerapkan perubahan

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

Python

Instal paket google-cloud-bigquery-reservation sebelum menggunakan contoh kode ini. Buat ReservationServiceClient. Jelaskan pemesanan yang ingin Anda buat dengan Pemesanan. Buat pemesanan dengan metode create_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Set slot_capicity to the number of slots in the
# reservation.
slot_capacity = 100

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service
from google.cloud.bigquery_reservation_v1.types import (
    reservation as reservation_types,
)

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)

parent = reservation_client.common_location_path(project_id, location)

reservation = reservation_types.Reservation(slot_capacity=slot_capacity)
reservation = reservation_client.create_reservation(
    parent=parent,
    reservation=reservation,
    reservation_id=reservation_id,
)

print(f"Created reservation: {reservation.name}")

Memperbarui pemesanan

Anda dapat melakukan perubahan berikut pada pemesanan:

  • Mengubah ukuran pemesanan dengan menambahkan atau menghapus slot.
  • Mengonfigurasi apakah kueri dalam pemesanan ini menggunakan slot tidak ada aktivitas.
  • Mengubah jumlah slot dasar pengukuran atau penskalaan otomatis yang dialokasikan untuk pemesanan.
  • Menetapkan konkurensi tugas target.

Untuk mengubah edisi pemesanan, hapus pemesanan terlebih dahulu, lalu buat pemesanan dengan edisi yang diperbarui.

Izin yang diperlukan

Untuk memperbarui pemesanan, Anda memerlukan izin Identity and Access Management (IAM) berikut:

Setiap peran IAM berikut yang telah ditentukan sebelumnya menyertakan izin ini:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Untuk mengetahui informasi selengkapnya tentang peran IAM di BigQuery, lihat Peran dan izin yang telah ditentukan sebelumnya.

Mengubah ukuran pemesanan

Anda dapat menambahkan atau menghapus slot dari pemesanan yang ada.

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel navigasi, buka bagian Pengelolaan kapasitas.

  3. Klik tab Pemesanan slot.

  4. Cari pemesanan yang ingin diperbarui.

  5. Perluas opsi Actions.

  6. Klik Edit.

  7. Pada dialog Pemilih ukuran pemesanan maksimum, masukkan ukuran pemesanan maksimum.

  8. Di kolom Slot dasar pengukuran, masukkan jumlah slot dasar pengukuran.

  9. Untuk meluaskan bagian Setelan lanjutan, klik panah perluas .

  10. Opsional: Untuk menetapkan konkurensi tugas target, klik tombol Ganti konkurensi tugas target otomatis ke aktif dan masukkan Konkurensi Tugas Target.

  11. Klik Simpan.

SQL

Untuk mengubah ukuran pemesanan, gunakan pernyataan bahasa definisi data (DDL) ALTER RESERVATION SET OPTIONS.

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    ALTER RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`
    SET OPTIONS (
      slot_capacity = NUMBER_OF_BASELINE_SLOTS,
      autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);

    Ganti kode berikut:

    • ADMIN_PROJECT_ID: project ID dari project administrasi yang memiliki resource pemesanan
    • LOCATION: lokasi pemesanan, misalnya europe-west9.
    • RESERVATION_NAME: nama pemesanan. Nama harus diawali dan diakhiri dengan huruf kecil atau angka, serta hanya berisi huruf kecil, angka, dan tanda hubung.

    • NUMBER_OF_BASELINE_SLOTS: jumlah slot dasar pengukuran yang akan dialokasikan ke pemesanan.
    • NUMBER_OF_AUTOSCALING_SLOTS: jumlah slot penskalaan otomatis yang ditetapkan untuk pemesanan. Nilai ini sama dengan nilai ukuran reservasi maksimum dikurangi jumlah slot dasar pengukuran.

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

bq

Untuk memperbarui ukuran pemesanan, gunakan perintah bq update dengan flag --reservation:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --slots=NUMBER_OF_BASELINE_SLOTS \
    --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \
    --reservation RESERVATION_NAME

Ganti kode berikut:

  • ADMIN_PROJECT_ID: project ID
  • LOCATION: lokasi pemesanan
  • NUMBER_OF_BASELINE_SLOTS: jumlah slot dasar pengukuran yang akan dialokasikan ke reservasi
  • RESERVATION_NAME: nama pemesanan
  • NUMBER_OF_AUTOSCALING_SLOTS: jumlah slot penskalaan otomatis yang ditetapkan untuk pemesanan. Nilai ini sama dengan nilai ukuran reservasi maksimum dikurangi jumlah slot dasar pengukuran.

Python

Instal paket google-cloud-bigquery-reservation sebelum menggunakan contoh kode ini. Buat ReservationServiceClient. Deskripsikan properti yang diperbarui dengan Pemesanan dan properti FieldMask.paths. Perbarui pemesanan dengan metode update_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Set slot_capicity to the new number of slots in the
# reservation.
slot_capacity = 50

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service
from google.cloud.bigquery_reservation_v1.types import (
    reservation as reservation_types,
)
from google.protobuf import field_mask_pb2

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)

reservation_name = reservation_client.reservation_path(
    project_id, location, reservation_id
)
reservation = reservation_types.Reservation(
    name=reservation_name,
    slot_capacity=slot_capacity,
)
field_mask = field_mask_pb2.FieldMask(paths=["slot_capacity"])
reservation = reservation_client.update_reservation(
    reservation=reservation, update_mask=field_mask
)

print(f"Updated reservation: {reservation.name}")
print(f"\tslot_capacity: {reservation.slot_capacity}")

Mengonfigurasi kueri menggunakan atau tidak slot yang tidak ada aktivitas

Flag --ignore_idle_slots mengontrol apakah kueri yang berjalan di pemesanan dapat menggunakan slot tidak ada aktivitas dari pemesanan lain. Untuk mengetahui informasi selengkapnya, lihat Slot tidak ada aktivitas. Anda dapat memperbarui konfigurasi ini pada pemesanan yang ada.

Untuk memperbarui pemesanan, gunakan perintah bq update dengan flag --reservation . Contoh berikut menetapkan --ignore_idle_slots ke true, yang berarti pemesanan hanya akan menggunakan slot yang dialokasikan untuk pemesanan.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --ignore_idle_slots=true \
    --reservation RESERVATION_NAME

Ganti kode berikut:

  • ADMIN_PROJECT_ID: project ID
  • LOCATION: lokasi pemesanan
  • RESERVATION_NAME: nama pemesanan

Mencantumkan konfigurasi slot yang tidak ada aktivitas

Untuk mencantumkan setelan slot tidak ada aktivitas untuk pemesanan, lakukan langkah berikut:

SQL

Buat kueri kolom ignore_idle_slots dari tampilan INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT.

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    SELECT
      reservation_name,
      ignore_idle_slots
    FROM
      `ADMIN_PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT;

    Ganti kode berikut:

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

bq

Gunakan perintah bq ls dengan flag --reservation:

bq ls --reservation \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION

Ganti kode berikut:

Kolom ignoreIdleSlots berisi setelan konfigurasi.

Menghapus beberapa pemesanan

Saat Anda menghapus pemesanan, tugas apa pun yang saat ini dijalankan dengan slot dari pemesanan tersebut akan gagal. Untuk mencegah error, izinkan tugas yang sedang berjalan selesai sebelum menghapus pemesanan.

Izin yang diperlukan

Untuk menghapus pemesanan, Anda memerlukan izin Identity and Access Management (IAM) berikut:

Setiap peran IAM berikut yang telah ditentukan sebelumnya menyertakan izin ini:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Untuk mengetahui informasi selengkapnya tentang peran IAM di BigQuery, lihat Peran dan izin yang telah ditentukan sebelumnya.

Menghapus pemesanan

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel navigasi, buka bagian Pengelolaan Kapasitas.

  3. Klik tab Reservations.

  4. Temukan pemesanan yang ingin Anda hapus.

  5. Perluas opsi Actions.

  6. Klik Delete.

  7. Pada dialog Hapus pemesanan, klik Hapus.

SQL

Untuk menghapus pemesanan, gunakan pernyataan DDL DROP RESERVATION.

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    DROP RESERVATION
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`;

    Ganti kode berikut:

    • ADMIN_PROJECT_ID: project ID dari project administrasi yang memiliki resource pemesanan
    • LOCATION: lokasi pemesanan
    • RESERVATION_NAME: ID pemesanan

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

bq

Untuk menghapus pemesanan, gunakan perintah bq rm dengan flag --reservation:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation RESERVATION_NAME

Ganti kode berikut:

  • ADMIN_PROJECT_ID: project ID dari project administrasi yang memiliki resource pemesanan
  • LOCATION: lokasi pemesanan
  • RESERVATION_NAME: nama pemesanan

Python

Instal paket google-cloud-bigquery-reservation sebelum menggunakan contoh kode ini. Buat ReservationServiceClient. Hapus pemesanan dengan metode delete_reservation.
# TODO(developer): Set project_id to the project ID containing the
# reservation.
project_id = "your-project-id"

# TODO(developer): Set location to the location of the reservation.
# See: https://cloud.google.com/bigquery/docs/locations for a list of
# available locations.
location = "US"

# TODO(developer): Set reservation_id to a unique ID of the reservation.
reservation_id = "sample-reservation"

# TODO(developer): Choose a transport to use. Either 'grpc' or 'rest'
transport = "grpc"

# ...

from google.cloud.bigquery_reservation_v1.services import reservation_service

reservation_client = reservation_service.ReservationServiceClient(
    transport=transport
)
reservation_name = reservation_client.reservation_path(
    project_id, location, reservation_id
)
reservation_client.delete_reservation(name=reservation_name)

print(f"Deleted reservation: {reservation_name}")