RESERVATIONS_TIMELINE 뷰

INFORMATION_SCHEMA.RESERVATIONS_TIMELINE 뷰에는 각 예약 관리 프로젝트에 대한 예약 메타데이터의 시간 구획이 분 단위로 실시간으로 표시됩니다. 또한 per_second_details 배열은 초당 자동 확장 세부정보를 보여줍니다.

필요한 권한

INFORMATION_SCHEMA.RESERVATION_TIMELINE 뷰를 쿼리하려면 프로젝트에 대한 bigquery.reservations.list Identity and Access Management (IAM) 권한이 필요합니다. 사전 정의된 다음 IAM 역할에는 각각 필수 권한이 포함되어 있습니다.

  • BigQuery 리소스 관리자 (roles/bigquery.resourceAdmin)
  • BigQuery 리소스 편집자 (roles/bigquery.resourceEditor)
  • BigQuery 리소스 뷰어 (roles/bigquery.resourceViewer)
  • BigQuery 사용자(roles/bigquery.user)
  • BigQuery 관리자(roles/bigquery.admin)

BigQuery 권한에 대한 자세한 내용은 BigQuery IAM 역할 및 권한을 참조하세요.

스키마

INFORMATION_SCHEMA.RESERVATIONS_TIMELINE_BY_* 뷰를 쿼리하면 지난 180일 동안의 모든 BigQuery 예약의 1분당 하나의 행과 180일보다 오래된 기간의 예약 변경사항이 있는 경우 1분당 하나의 행이 쿼리 결과에 포함됩니다. 각 기간은 1분 간격으로 시작하고 정확히 1분 동안 지속됩니다.

INFORMATION_SCHEMA.RESERVATIONS_TIMELINE_BY_PROJECT 뷰에는 다음과 같은 스키마가 있습니다.

열 이름 데이터 유형
autoscale STRUCT

예약의 자동 확장 용량에 대한 정보가 포함됩니다. 필드에는 다음이 포함됩니다.

  • current_slots: 자동 확장으로 예약에 추가된 슬롯 수입니다.
  • max_slots: 자동 확장으로 예약에 추가할 수 있는 최대 슬롯 수입니다.
edition STRING 이 예약과 연결된 버전입니다. 버전에 대한 자세한 내용은 BigQuery 버전 소개를 참조하세요.
ignore_idle_slots BOOL 슬롯 공유가 사용 설정되어 있으면 false, 그렇지 않으면 true입니다.
labels RECORD 예약과 연결된 라벨 배열입니다.
period_start TIMESTAMP 이 1분 기간의 시작 시간
per_second_details STRUCT

매초의 예약 용량 및 사용량에 관한 정보를 포함합니다. 필드에는 다음이 포함됩니다.

  • start_time: 초의 정확한 타임스탬프입니다.
  • autoscale_current_slots: 이 초에 자동 확장으로 예약에 추가된 슬롯 수입니다.
  • autoscale_max_slots: 이 시점에 자동 확장으로 예약에 추가할 수 있는 최대 슬롯 수입니다.
  • slots_assigned: 이 시점에 이 예약에 할당된 슬롯 수입니다. 예약의 기준 슬롯 용량과 같습니다.
  • slots_max_assigned: 이 예약의 최대 슬롯 용량입니다(이 시점의 슬롯 공유 포함). ignore_idle_slots가 true이면 이 필드는 slots_assigned와 동일합니다. 그렇지 않으면 slots_max_assigned 필드는 관리 프로젝트에 있는 모든 용량 약정의 총 슬롯 수입니다.

이 1분 동안 자동 확장 또는 예약 변경사항이 있는 경우 배열은 60개 행으로 채워집니다. 하지만 이 시간 동안 변경되지 않은 자동 확장되지 않는 예약의 경우 배열이 비어 있습니다. 그렇지 않으면 동일한 숫자가 60번 반복되기 때문입니다.

project_id STRING 예약 관리 프로젝트의 ID입니다.
project_number INTEGER 프로젝트의 번호
reservation_id STRING jobs_timeline 테이블과 조인. 형식은 project_id:location.reservation_name입니다.
reservation_name STRING 예약 이름
slots_assigned INTEGER 이 예약에 할당된 슬롯 수
slots_max_assigned INTEGER 슬롯 공유를 포함하여 이 예약의 최대 슬롯 용량. ignore_idle_slots가 true이면 이 값은 slots_assigned와 동일하며, 그렇지 않으면 관리 프로젝트에 있는 모든 용량 약정의 총 슬롯 수입니다.
max_slots INTEGER 이 예약이 사용할 수 있는 최대 슬롯 수입니다. 여기에는 기준 슬롯(slot_capacity), 유휴 슬롯(ignore_idle_slots이 false인 경우), 자동 확장 슬롯이 포함됩니다. 이 필드는 사용자가 예약 예측 기능을 사용하기 위해 지정합니다.
scaling_mode STRING 예약의 확장 모드입니다. 기준에서 max_slots로 예약이 확장되는 방식을 결정합니다. 이 필드는 사용자가 예약 예측 기능을 사용하기 위해 지정합니다.

범위 및 구문

이 뷰에 대한 쿼리에는 리전 한정자가 있어야 합니다. 리전 한정자를 지정하지 않으면 메타데이터가 모든 리전에서 검색됩니다. 다음 표에서는 이 뷰의 리전 범위와 리소스 범위를 설명합니다.

뷰 이름 리소스 범위 리전 범위
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE[_BY_PROJECT] 프로젝트 수준 REGION
다음을 바꿉니다.
  • 선택사항: PROJECT_ID: Google Cloud 프로젝트의 ID입니다. 지정하지 않으면 기본 프로젝트가 사용됩니다.
  • REGION: 모든 데이터 세트 리전 이름입니다. 예를 들면 `region-us`입니다.

예시

예: 초당 총 슬롯 사용량 보기

기본 프로젝트가 아닌 프로젝트에 대해 쿼리를 실행하려면 다음 형식으로 프로젝트 ID를 추가합니다.

`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
. 예를 들면 `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION입니다.

다음 예시에서는 모든 작업에서 YOUR_RESERVATION_ID에 할당된 프로젝트의 초당 슬롯 사용량을 보여줍니다.

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;

결과는 다음과 비슷합니다.

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

예시: 예약별 슬롯 사용량

다음 예시에서는 마지막 날짜의 각 예약에 대한 초당 슬롯 사용량을 보여줍니다.

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;

결과는 다음과 비슷합니다.

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