Compartir vía


Referencia de tabla del sistema eventos de almacenamiento

Importante

Esta característica está en versión preliminar pública.

En este artículo, aprenderá a usar la tabla del sistema de eventos de almacenamiento para supervisar y administrar los almacenes de SQL en las áreas de trabajo. Esta tabla registra una fila cada vez que se inicia, detiene, ejecuta y escala verticalmente un almacén. Puede usar las consultas de ejemplo de este artículo con alertas para mantener informado de los cambios en los almacenes.

La tabla del sistema de eventos de almacenamiento se encuentra en system.compute.warehouse_events.

Tipos de eventos de almacenamiento registrados

Esta tabla del sistema registra los siguientes tipos de eventos:

  • SCALED_UP: se agregó un nuevo clúster al almacén.
  • SCALED_DOWN: se quitó un clúster del almacén.
  • STOPPING: el almacén está en proceso de detención.
  • RUNNING: el almacén se está ejecutando activamente.
  • STARTING: el almacén está en proceso de arranque.
  • STOPPED: el almacén ha dejado de funcionar completamente.

Esquema de eventos de almacenamiento

La tabla del sistema warehouse_events usa el siguiente esquema:

Nombre de la columna Tipo de datos Descripción Ejemplo
account_id cadena Identificador de la cuenta de Azure Databricks. 7af234db-66d7-4db3-bbf0-956098224879
workspace_id string El identificador del área de trabajo donde se implementa el almacenamiento. 123456789012345
warehouse_id string El identificador del almacén de SQL al que está relacionado el evento. 123456789012345
event_type string Tipo de evento de almacenamiento. Los valores posibles son SCALED_UP, SCALED_DOWN, STOPPING, RUNNING, STARTING y STOPPED. SCALED_UP
cluster_count integer Número de clústeres que se están ejecutando activamente. 2
event_time timestamp Marca de tiempo de cuándo tuvo lugar el evento. 2023-07-20T19:13:09.504Z

Consultas de ejemplo

Las siguientes consultas de ejemplo son plantillas. Introduzca cualquier valor que tenga sentido para su organización. También puede agregar alertas a estas consultas para ayudarle a mantenerse informado sobre los cambios en los almacenes. Consulte Creación de una alerta.

Use las siguientes consultas de ejemplo para obtener información sobre el comportamiento del almacenamiento:

¿Qué almacenes se están ejecutando activamente y durante cuánto tiempo?

Esta consulta identifica qué almacenes están activos actualmente junto con su tiempo de ejecución en horas.

USE CATALOG `system`;

SELECT
we.warehouse_id,
we.event_time,
TIMESTAMPDIFF(MINUTE, we.event_time, CURRENT_TIMESTAMP()) / 60.0 AS running_hours,
we.cluster_count
FROM
compute.warehouse_events we
WHERE
we.event_type = 'RUNNING'
AND NOT EXISTS (
SELECT 1
FROM compute.warehouse_events we2
WHERE we2.warehouse_id = we.warehouse_id
AND we2.event_time > we.event_time
)

Oportunidad de alerta: como administrador del área de trabajo, es posible que desee recibir alertas si un almacenamiento se está ejecutando más de lo esperado. Por ejemplo, puede usar los resultados de la consulta para establecer una condición de alerta que se desencadene cuando las horas en ejecución superen un umbral determinado.

Identificar almacenes que se escalan más tiempo de lo esperado

Esta consulta identifica qué almacenes están activos actualmente junto con su tiempo de ejecución en horas.

use catalog `system`;

SELECT
   we.warehouse_id,
   we.event_time,
   TIMESTAMPDIFF(MINUTE, we.event_time, CURRENT_TIMESTAMP()) / 60.0 AS upscaled_hours,
   we.cluster_count
FROM
   compute.warehouse_events we
WHERE
   we.event_type = 'SCALED_UP'
   AND we.cluster_count >= 2
   AND NOT EXISTS (
       SELECT 1
       FROM compute.warehouse_events we2
       WHERE we2.warehouse_id = we.warehouse_id
       AND (
           (we2.event_type = 'SCALED_DOWN') OR
           (we2.event_type = 'SCALED_UP' AND we2.cluster_count < 2)
       )
       AND we2.event_time > we.event_time
   )

Oportunidad de alerta: las alertas sobre esta condición pueden ayudarle a supervisar los recursos y el costo. Puede establecer una alerta para cuando las horas de escalado superen un determinado límite.

Almacenes que arrancan por primera vez

Esta consulta le informa sobre los nuevos almacenes que arrancan por primera vez.

use catalog `system`;

SELECT
   we.warehouse_id,
   we.event_time,
   we.cluster_count
FROM
   compute.warehouse_events we
WHERE
   (we.event_type = 'STARTING' OR we.event_type = 'RUNNING')
   AND NOT EXISTS (
       SELECT 1
       FROM compute.warehouse_events we2
       WHERE we2.warehouse_id = we.warehouse_id
       AND we2.event_time < we.event_time
   )

Oportunidad de alerta: las alertas sobre nuevos almacenes pueden ayudar a su organización a realizar un seguimiento de la asignación de recursos. Por ejemplo, podría establecer una alerta que se desencadene cada vez que arranque un nuevo almacenamiento.

Investigar los cargos de facturación

Si desea comprender específicamente lo que hacía un almacén para generar cargos de facturación, esta consulta puede indicarle las fechas y horas exactas de escalado o reducción vertical del almacén, o bien en que se puso en marcha o se detuvo.

use catalog `system`;

SELECT
    we.warehouse_id AS warehouse_id,
    we.event_type AS event,
    we.event_time AS event_time,
    we.cluster_count AS cluster_count
FROM
    compute.warehouse_events AS we
WHERE
    we.event_type IN (
        'STARTING', 'RUNNING', 'STOPPING', 'STOPPED',
        'SCALING_UP', 'SCALED_UP', 'SCALING_DOWN', 'SCALED_DOWN'
    )
    AND MONTH(we.event_time) = 7
    AND YEAR(we.event_time) = YEAR(CURRENT_DATE())
    AND we.warehouse_id = '19c9d68652189278'
ORDER BY
    event_time DESC

¿Qué almacenes no se han usado en los últimos 30 días?

Esta consulta le ayuda a identificar los recursos no utilizados, lo que proporciona una oportunidad para la optimización de costos.

use catalog `system`;

SELECT
    we.warehouse_id,
    we.event_time,
    we.event_type,
    we.cluster_count
FROM
    compute.warehouse_events AS we
WHERE
    we.warehouse_id IN (
        SELECT DISTINCT
            warehouse_id
        FROM
            compute.warehouse_events
        WHERE
            MONTH(event_time) = 6
            AND YEAR(event_time) = YEAR(CURRENT_DATE())
    )
    AND we.warehouse_id NOT IN (
        SELECT DISTINCT
            warehouse_id
        FROM
            compute.warehouse_events
        WHERE
            MONTH(event_time) = 7
            AND YEAR(event_time) = YEAR(CURRENT_DATE())
    )
ORDER BY
    event_time DESC

Oportunidad de alerta: recibir una alerta sobre recursos no utilizados podría ayudar a su organización a optimizar los costos. Por ejemplo, podría establecer una alerta que se desencadene cuando la consulta detecte un almacenamiento sin usar.

Almacenes con más tiempo de actividad en un mes

Esta consulta muestra qué almacenes se han usado más durante un mes específico. Esta consulta usa julio como ejemplo.

use catalog `system`;

SELECT
   warehouse_id,
   SUM(TIMESTAMPDIFF(MINUTE, start_time, end_time)) / 60.0 AS uptime_hours
FROM (
   SELECT
      starting.warehouse_id,
      starting.event_time AS start_time,
      (
         SELECT
            MIN(stopping.event_time)
         FROM
            compute.warehouse_events AS stopping
         WHERE
            stopping.warehouse_id = starting.warehouse_id
            AND stopping.event_type = 'STOPPED'
            AND stopping.event_time > starting.event_time
      ) AS end_time
   FROM
      compute.warehouse_events AS starting
   WHERE
      starting.event_type = 'STARTING'
      AND MONTH(starting.event_time) = 7
      AND YEAR(starting.event_time) = YEAR(CURRENT_DATE())
) AS warehouse_uptime
WHERE
   end_time IS NOT NULL
GROUP BY
   warehouse_id
ORDER BY
   uptime_hours DESC

Oportunidad de alerta: es posible que desee realizar un seguimiento de los almacenes de uso elevado. Por ejemplo, podría establecer una alerta que se desencadene cuando las horas de tiempo de actividad de un almacén superen un umbral específico.

Almacenes que más tiempo dedicaron al escalado durante un mes

Esta consulta le informa sobre los almacenes que han invertido mucho tiempo en el estado de escalado vertical durante un mes. Esta consulta usa julio como ejemplo.

use catalog `system`;

SELECT
   warehouse_id,
   SUM(TIMESTAMPDIFF(MINUTE, upscaled_time, downscaled_time)) / 60.0 AS upscaled_hours
FROM (
   SELECT
      upscaled.warehouse_id,
      upscaled.event_time AS upscaled_time,
      (
         SELECT
            MIN(downscaled.event_time)
         FROM
            compute.warehouse_events AS downscaled
         WHERE
            downscaled.warehouse_id = upscaled.warehouse_id
            AND (downscaled.event_type = 'SCALED_DOWN' OR downscaled.event_type = 'STOPPED')
            AND downscaled.event_time > upscaled.event_time
      ) AS downscaled_time
   FROM
      compute.warehouse_events AS upscaled
   WHERE
      upscaled.event_type = 'SCALED_UP'
      AND upscaled.cluster_count >= 2
      AND MONTH(upscaled.event_time) = 7
      AND YEAR(upscaled.event_time) = YEAR(CURRENT_DATE())
) AS warehouse_upscaled
WHERE
   downscaled_time IS NOT NULL
GROUP BY
   warehouse_id
ORDER BY
   upscaled_hours DESC limit 0;

Oportunidad de alerta: es posible que desee realizar un seguimiento de los almacenes de uso elevado. Por ejemplo, podría establecer una alerta que se desencadene cuando las horas de tiempo de actividad de un almacén superen un umbral específico.