Tampilan RESERVATIONS_TIMELINE

Tampilan INFORMATION_SCHEMA.RESERVATIONS_TIMELINE menunjukkan timeslice metadata reservasi untuk setiap project administrasi reservasi untuk setiap menit secara real time. Selain itu, array per_second_details menampilkan detail penskalaan otomatis untuk setiap detik.

Izin yang diperlukan

Untuk membuat kueri tampilan INFORMATION_SCHEMA.RESERVATION_TIMELINE, Anda memerlukan izin Identity and Access Management (IAM) bigquery.reservations.list di project tersebut. Setiap peran IAM yang telah ditetapkan berikut menyertakan izin yang diperlukan:

  • BigQuery Resource Admin (roles/bigquery.resourceAdmin)
  • BigQuery Resource Editor (roles/bigquery.resourceEditor)
  • BigQuery Resource Viewer (roles/bigquery.resourceViewer)
  • BigQuery User (roles/bigquery.user)
  • BigQuery Admin (roles/bigquery.admin)

Untuk mengetahui informasi selengkapnya tentang izin BigQuery, lihat Peran dan izin IAM BigQuery.

Skema

Saat Anda membuat kueri tampilan INFORMATION_SCHEMA.RESERVATIONS_TIMELINE_BY_*, hasil kueri akan berisi satu baris untuk setiap menit dari setiap reservasi BigQuery dalam 180 hari terakhir, dan satu baris untuk setiap menit dengan perubahan reservasi untuk kejadian yang lebih lama dari 180 hari. Setiap periode dimulai pada interval satu menit penuh dan berlangsung tepat satu menit.

Tampilan INFORMATION_SCHEMA.RESERVATIONS_TIMELINE_BY_PROJECT memiliki skema berikut:

Nama kolom Jenis data Nilai
autoscale STRUCT

Berisi informasi tentang kapasitas penskalaan otomatis reservasi. Kolom mencakup:

  • current_slots: jumlah slot yang ditambahkan ke reservasi oleh penskalaan otomatis.
  • max_slots: jumlah maksimum slot yang dapat ditambahkan ke reservasi dengan penskalaan otomatis.
edition STRING Edisi yang terkait dengan reservasi ini. Untuk mengetahui informasi selengkapnya tentang edisi, lihat Pengantar edisi BigQuery.
ignore_idle_slots BOOL False (salah) jika berbagi slot diaktifkan, jika tidak, true (benar).
labels RECORD Array label yang terkait dengan reservasi.
period_start TIMESTAMP Waktu mulai periode satu menit ini.
per_second_details STRUCT

Berisi informasi tentang kapasitas dan penggunaan reservasi setiap detik. Kolom mencakup:

  • start_time: stempel waktu yang tepat dari detik tersebut.
  • autoscale_current_slots: jumlah slot yang ditambahkan ke reservasi oleh penskalaan otomatis pada detik ini.
  • autoscale_max_slots: jumlah maksimum slot yang dapat ditambahkan ke reservasi dengan penskalaan otomatis pada detik ini.
  • slots_assigned: jumlah slot yang ditetapkan untuk pemesanan ini pada detik ini. Nilainya sama dengan kapasitas slot dasar pengukuran reservasi.
  • slots_max_assigned: kapasitas slot maksimum untuk reservasi ini, termasuk berbagi slot pada detik ini. Jika ignore_idle_slots bernilai benar, kolom ini sama dengan slots_assigned. Jika tidak, kolom slots_max_assigned adalah jumlah total slot dalam semua komitmen kapasitas dalam project administrasi.

Jika ada perubahan penskalaan otomatis atau reservasi selama satu menit ini, array akan diisi dengan 60 baris. Namun, untuk reservasi non-penskalaan otomatis yang tetap tidak berubah selama satu menit ini, array kosong karena jika tidak, array akan mengulangi angka yang sama 60 kali.

project_id STRING ID project administrasi pemesanan.
project_number INTEGER Nomor project.
reservation_id STRING Untuk bergabung dengan tabel jobs_timeline. Kolom ini memiliki format project_id:location.reservation_name.
reservation_name STRING Nama pemesanan.
slots_assigned INTEGER Jumlah slot yang ditetapkan untuk pemesanan ini.
slots_max_assigned INTEGER Kapasitas slot maksimum untuk pemesanan ini, termasuk berbagi slot. Jika ignore_idle_slots bernilai benar, ini sama dengan slots_assigned. Jika tidak, ini adalah jumlah total slot dalam semua komitmen kapasitas dalam project administrasi.
max_slots INTEGER Jumlah maksimum slot yang dapat digunakan oleh reservasi ini, yang mencakup slot dasar pengukuran (slot_capacity), slot tidak ada aktivitas (jika ignore_idle_slots salah), dan slot penskalaan otomatis. Kolom ini ditentukan oleh pengguna untuk menggunakan fitur prediktabilitas reservasi.
scaling_mode STRING Mode penskalaan untuk reservasi, yang menentukan cara penskalaan reservasi dari dasar pengukuran ke max_slots. Kolom ini ditentukan oleh pengguna untuk menggunakan fitur prediktabilitas reservasi.

Cakupan dan sintaksis

Kueri terhadap tabel virtual ini harus menyertakan penentu region. Jika Anda tidak menentukan penentu regional, metadata akan diambil dari semua region. Tabel berikut menjelaskan cakupan region dan resource untuk tampilan ini:

Nama tampilan Cakupan resource Cakupan region
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE[_BY_PROJECT] Level project REGION
Ganti kode berikut:
  • Opsional: PROJECT_ID: ID project Google Cloud Anda. Jika tidak ditentukan, project default akan digunakan.
  • REGION: nama region set data apa pun. Misalnya, `region-us`.

Contoh

Contoh: Lihat total penggunaan slot per detik

Untuk menjalankan kueri terhadap project selain project default Anda, tambahkan project ID dalam format berikut:

`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
. Misalnya, `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION.

Contoh berikut menunjukkan penggunaan slot per detik dari project yang ditetapkan ke YOUR_RESERVATION_ID di semua tugas:

SELECT
  s.start_time AS period_start,
  SUM(jobs.period_slot_ms) / 1000 AS period_slot_seconds,
  ANY_VALUE(s.slots_assigned) AS estimated_slots_assigned,
  ANY_VALUE(s.slots_max_assigned) AS estimated_slots_max_assigned
FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs
JOIN `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res
    ON jobs.reservation_id = res.reservation_id
 JOIN res.per_second_details s
    ON jobs.period_start = s.start_time
WHERE
  jobs.job_creation_time
    BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
        AND CURRENT_TIMESTAMP()
  AND res.period_start
    BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
        AND CURRENT_TIMESTAMP()
  AND res.reservation_id = 'YOUR_RESERVATION_ID'
  AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL)  -- Avoid duplicate byte counting in parent and children jobs.
GROUP BY
  period_start
ORDER BY
  period_start DESC;

Hasilnya mirip dengan berikut ini:

+-----------------------+---------------------+--------------------------+------------------------------+
|     period_start      | period_slot_seconds | estimated_slots_assigned | estimated_slots_max_assigned |
+-----------------------+---------------------+--------------------------+------------------------------+
|2021-06-08 21:33:59 UTC|       100.000       |         100              |           100                |
|2021-06-08 21:33:58 UTC|        96.753       |         100              |           100                |
|2021-06-08 21:33:57 UTC|        41.668       |         100              |           100                |
+-----------------------+---------------------+--------------------------+------------------------------+

Contoh: Penggunaan slot berdasarkan pemesanan

Contoh berikut menunjukkan penggunaan slot per detik untuk setiap reservasi dalam satu hari terakhir:

SELECT
  s.start_time AS period_start,
  res.reservation_id,
  SUM(jobs.period_slot_ms) / 1000 AS period_slot_seconds,
  ANY_VALUE(res.slots_assigned) AS estimated_slots_assigned,
  ANY_VALUE(res.slots_max_assigned) AS estimated_slots_max_assigned,
FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs
JOIN `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res
  ON jobs.reservation_id = res.reservation_id
JOIN res.per_second_details s
  ON jobs.period_start = s.start_time
WHERE
  jobs.job_creation_time
      BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
          AND CURRENT_TIMESTAMP()
  AND res.period_start
      BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
          AND CURRENT_TIMESTAMP()
  AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL)  -- Avoid duplicate byte counting in parent and children jobs.
GROUP BY
  period_start,
  reservation_id
ORDER BY
  period_start DESC,
  reservation_id;

Hasilnya mirip dengan berikut ini:

+-----------------------+----------------+---------------------+--------------------------+------------------------------+
|     period_start      | reservation_id | period_slot_seconds | estimated_slots_assigned | estimated_slots_max_assigned |
+-----------------------+----------------+---------------------+--------------------------+------------------------------+
|2021-06-08 21:33:59 UTC|     prod01     |       100.000       |             100          |              100             |
|2021-06-08 21:33:58 UTC|     prod02     |       177.201       |             200          |              500             |
|2021-06-08 21:32:57 UTC|     prod01     |        96.753       |             100          |              100             |
|2021-06-08 21:32:56 UTC|     prod02     |       182.329       |             200          |              500             |
+-----------------------+----------------+---------------------+--------------------------+------------------------------+