Menggunakan reservasi slot lama

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 Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

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 Pengelolaan kapasitas.

  3. Klik Buat pemesanan.

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

  5. Di menu drop-down Lokasi, pilih lokasi.

  6. Di bagian Capacity Model, pilih model kapasitas.

  7. Jika Anda memilih opsi Flat-Rate, di bagian Slot dasar, masukkan jumlah slot untuk reservasi.

    1. Pada daftar Pemilih ukuran pemesanan maksimum, pilih ukuran pemesanan maksimum.
    2. Opsional: Di kolom Slot dasar pengukuran, masukkan jumlah slot dasar pengukuran untuk pemesanan. Untuk hanya menggunakan kapasitas slot yang ditentukan, klik tombol Abaikan slot nonaktif.

      Jumlah slot penskalaan otomatis yang tersedia untuk Anda ditentukan dengan mengurangi nilai slot dasar pengukuran dari nilai 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, klik tombol Abaikan slot tidak ada aktivitas.

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

  10. Klik Simpan.

Reservasi baru dapat dilihat di tab Reservasi.

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,
    );

    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: jumlah slot dasar pengukuran yang akan dialokasikan ke pemesanan. 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 \
    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.

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.

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

  4. Temukan reservasi yang ingin Anda perbarui.

  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. 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,
    );

    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.

  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 \
    --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

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}")

Menambahkan BigQuery Reservation API ke Kontrol Layanan VPC

BigQuery Reservation API mendukung Kontrol Layanan VPC. Untuk mengintegrasikan BigQuery Reservation API dengan Kontrol Layanan VPC, ikuti petunjuk di bagian Membuat perimeter layanan, dan tambahkan BigQuery Reservation API ke layanan yang dilindungi.

Perimeter layanan melindungi akses ke pemesanan, komitmen, dan tugas dalam project administrasi yang ditentukan dalam perimeter. Saat membuat tugas, Kontrol Layanan VPC melindungi project administrasi serta project, folder, dan organisasi penerima tugas.