Udostępnij za pośrednictwem


System zdarzeń magazynowych table

Ważne

Ten system table znajduje się w publicznej wersji testowej. Aby uzyskać dostęp do table, schema musi być włączona w systemcatalog. Aby uzyskać więcej informacji, zobacz Włączanie schematów table systemu.

Z tego artykułu dowiesz się, jak korzystać z systemu zdarzeń magazynowych table do monitorowania i zarządzania magazynami SQL w obszarach roboczych. Ten table rejestruje wiersz za każdym razem, gdy magazyn się uruchamia, zatrzymuje, działa oraz zwiększa lub zmniejsza skalę. Możesz użyć przykładowych zapytań w tym artykule z alertami, aby otrzymywać informacje o zmianach w magazynach.

Table ścieżka: Ten system table znajduje się w lokalizacji system.compute.warehouse_events.

Zarejestrowane typy zdarzeń magazynu

Ten system table rejestruje następujące typy zdarzeń:

  • SCALED_UP: Nowy klaster został dodany do magazynu.
  • SCALED_DOWN: klaster został usunięty z magazynu.
  • STOPPING: Magazyn jest w trakcie zatrzymywania.
  • RUNNING: magazyn jest aktywnie uruchomiony.
  • STARTING: Magazyn jest w trakcie uruchamiania.
  • STOPPED: magazyn całkowicie przestał działać.

Zdarzenia magazynu schema

System warehouse_eventstable używa następujących schema:

nazwa Column Typ danych opis Przykład
account_id string Identyfikator konta usługi Azure Databricks. 7af234db-66d7-4db3-bbf0-956098224879
workspace_id string Identyfikator obszaru roboczego where, w którym magazyn jest wdrożony. 123456789012345
warehouse_id string Identyfikator magazynu SQL, z tym zdarzeniem jest powiązane. 123456789012345
event_type string Typ zdarzenia magazynu. Możliwe values to SCALED_UP, SCALED_DOWN, STOPPING, RUNNING, STARTINGi STOPPED. SCALED_UP
cluster_count integer Liczba klastrów, które są aktywnie uruchomione. 2
event_time timestamp Sygnatura czasowa zdarzenia w formacie UTC. 2023-07-20T19:13:09.504Z

Przykładowe zapytania

Poniższe przykładowe zapytania to szablony. Dodaj dowolne values, które mają sens dla twojej organizacji. Możesz również dodać alerty do tych zapytań, aby ułatwić informowanie o zmianach w magazynach. Zobacz Tworzenie alertu.

Skorzystaj z następujących przykładowych zapytań, aby uzyskać wgląd w zachowanie magazynu:

Które magazyny są aktywnie uruchomione i jak długo?

To zapytanie określa, które magazyny są obecnie aktywne wraz z czasem działania w godzinach.

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
)

Możliwość alertu: jako administrator obszaru roboczego możesz otrzymywać alerty, jeśli magazyn działa dłużej niż oczekiwano. Na przykład możesz użyć wyników zapytania, aby set warunek alertu do wyzwolenia, gdy godziny pracy przekraczają określony próg.

Identyfikowanie magazynów, które są rozbudowane dłużej niż oczekiwano

To zapytanie określa, które magazyny są obecnie aktywne wraz z czasem działania w godzinach.

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
   )

Szansa sprzedaży alertów: Alerty dotyczące tego warunku mogą pomóc w monitorowaniu zasobów i kosztów. Możesz set alert, gdy liczba godzin przeskalowanych przekracza określony limit.

Magazyny, które zaczynają się po raz pierwszy

To zapytanie informuje o nowych magazynach, które są uruchamiane po raz pierwszy.

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
   )

Możliwość zgłaszania alertów: Alerty dotyczące nowych magazynów mogą pomóc organizacji w śledzeniu alokacji zasobów. Można na przykład set alert, który jest wyzwalany za każdym razem, gdy zostanie uruchomiony nowy magazyn.

Badanie opłat za rozliczenia

Jeśli chcesz zrozumieć, co robił magazyn w odniesieniu do opłat za generate rozliczenia, to zapytanie może pokazać dokładne daty i godziny, kiedy magazyn zwiększał lub zmniejszał skalę albo rozpoczęło lub zakończyło działalność.

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

Które magazyny nie były używane w ciągu ostatnich 30 dni?

To zapytanie pomaga zidentyfikować nieużywane zasoby, co zapewnia możliwość optymalizacji kosztów.

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

Możliwość otrzymania alertu: Otrzymywanie alertu dotyczącego nieużywanych zasobów może pomóc Twojej organizacji w obniżeniu optimize kosztów. Można na przykład set alert, który jest wyzwalany, gdy zapytanie wykryje nieużywany magazyn.

Magazyny z największą dostępnością w miesiącu

To zapytanie pokazuje, które magazyny były używane najbardziej w określonym miesiącu. To zapytanie używa lipca jako przykładu.

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

Możliwość zgłaszania alertów: możesz śledzić magazyny o wysokim wykorzystaniu. Można na przykład set alert, który jest wyzwalany, gdy czas działania magazynu przekroczy określony próg.

Magazyny, które spędziły najwięcej czasu w górę w ciągu miesiąca

To zapytanie informuje o magazynach, które spędziły znaczną ilość czasu w stanie rozbudowy w ciągu miesiąca. To zapytanie używa lipca jako przykładu.

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

Możliwość zgłaszania alertów: możesz śledzić magazyny o wysokim wykorzystaniu. Można na przykład set alert, który jest wyzwalany, gdy czas pracy magazynu przekroczy określony próg.