监控持续查询

您可以使用以下 BigQuery 工具监控 BigQuery 持续查询:

由于 BigQuery 持续查询运行时间较长的性质,因此通常在 SQL 查询完成时生成的指标可能不存在或不准确。

使用 INFORMATION_SCHEMA 视图监控持续查询

您可以使用多个 INFORMATION_SCHEMA 视图来监控持续查询和持续查询预留。

获取持续查询作业详细信息

您可以使用 ASSIGNMENTSJOBS 视图获取持续查询作业元数据。

返回所有正在运行的持续查询的元数据:

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,运行以下查询:

    SELECT
      jobs.job_id,
      jobs.user_email,
      jobs.query,
      jobs.state,
      assignment.reservation_name
    FROM `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.ASSIGNMENTS` AS assignment
    INNER JOIN `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.JOBS` AS jobs
      ON (CONCAT('ADMIN_PROJECT_ID:LOCATION.', assignment.reservation_name) = jobs.reservation_id)
    WHERE
      assignment.assignee_id = 'PROJECT_ID'
      AND assignment.job_type = 'CONTINUOUS'
      AND jobs.state = 'RUNNING'
    GROUP BY 1, 2, 3, 4, 5;

    替换以下内容:

    • ADMIN_PROJECT_ID:拥有预留的管理项目的 ID。
    • LOCATION:预留的位置。
    • PROJECT_ID:分配给预留的项目的 ID。系统只会返回此项目中运行的持续查询的相关信息。

获取持续查询预留分配详细信息

您可以使用 ASSIGNMENTSRESERVATIONS 视图获取持续查询预留分配详细信息。

返回持续查询的预留分配详细信息:

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,运行以下查询:

    SELECT
      reservation.reservation_name,
      reservation.slot_capacity
    FROM
      `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.ASSIGNMENTS`
        AS assignment
    INNER JOIN
      `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.RESERVATIONS`
        AS reservation
      ON (assignment.reservation_name = reservation.reservation_name)
    WHERE
      assignment.assignee_id = 'PROJECT_ID'
      AND job_type = 'CONTINUOUS';

    替换以下内容:

    • ADMIN_PROJECT_ID:拥有预留的管理项目的 ID。
    • LOCATION:预留的位置。
    • PROJECT_ID:分配给预留的项目的 ID。系统只会返回此项目中运行的持续查询的相关信息。

获取持续查询槽用量信息

您可以使用 ASSIGNMENTSRESERVATIONSJOBS_TIMELINE 视图获取持续查询槽用量信息。

返回持续查询的槽用量信息:

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,运行以下查询:

    SELECT
      jobs.period_start,
      reservation.reservation_name,
      reservation.slot_capacity,
      SUM(jobs.period_slot_ms) / 1000 AS consumed_total_slots
    FROM
      `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.ASSIGNMENTS`
        AS assignment
    INNER JOIN
      `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.RESERVATIONS`
        AS reservation
      ON (assignment.reservation_name = reservation.reservation_name)
    INNER JOIN
      `ADMIN_PROJECT_ID.region-LOCATION.INFORMATION_SCHEMA.JOBS_TIMELINE` AS jobs
      ON (
        CONCAT('ADMIN_PROJECT_ID:LOCATION.', assignment.reservation_name)
        = jobs.reservation_id)
    WHERE
      assignment.assignee_id = 'PROJECT_ID'
      AND assignment.job_type = 'CONTINUOUS'
      AND jobs.period_start
        BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
        AND CURRENT_TIMESTAMP()
    GROUP BY 1, 2, 3
    ORDER BY jobs.period_start DESC;

    替换以下内容:

    • ADMIN_PROJECT_ID:拥有预留的管理项目的 ID。
    • LOCATION:预留的位置。
    • PROJECT_ID:分配给预留的项目的 ID。系统只会返回此项目中运行的持续查询的相关信息。

您还可以使用其他工具(例如 Metrics Explorer管理资源图表)监控持续查询预留。如需了解详情,请参阅监控 BigQuery 预留

使用查询执行图监控持续查询性能

您可以使用查询执行图获取持续查询的性能数据分析和一般统计信息。如需了解详情,请参阅查看查询性能数据分析

使用作业历史记录监控持续查询执行

您可以在个人作业历史记录或项目的作业历史记录中查看作业详细信息。如需了解详情,请参阅查看作业详细信息

请注意,历史作业列表按作业开始时间排序,因此已经运行了一段时间的持续查询可能不会靠近列表的开头。