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 system
catalog. 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_events
table 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 , STARTING i 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?
- Identyfikowanie magazynów, które są rozbudowane dłużej niż oczekiwano
- Magazyny, które zaczynają się po raz pierwszy
- Badanie opłat za rozliczenia
- Które magazyny nie były używane w ciągu ostatnich 30 dni?
- Magazyny z największą dostępnością w miesiącu
- Magazyny, które spędziły najwięcej czasu w górę w ciągu miesiąca
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.