Поделиться через


Справочник по системной таблице событий хранилища

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

В этой статье вы узнаете, как использовать системную таблицу событий хранилища для мониторинга хранилищ SQL и управления ими в рабочих областях. Эта таблица записывает строку при каждом запуске хранилища, остановке, запуске и масштабировании вверх и вниз. Примеры запросов в этой статье можно использовать с оповещениями для информирования о изменениях в хранилищах.

В системной таблице событий хранилища находится system.compute.warehouse_eventsтаблица событий хранилища.

Типы событий хранилища в журнале

Эта системная таблица регистрирует следующие типы событий:

  • SCALED_UP: в хранилище добавлен новый кластер.
  • SCALED_DOWN: кластер был удален из хранилища.
  • STOPPING: склад находится в процессе остановки.
  • RUNNING: склад активно работает.
  • STARTING: склад находится в процессе запуска.
  • STOPPED: склад полностью перестал работать.

Схема событий хранилища

Системная warehouse_events таблица использует следующую схему:

Имя столбца Тип данных Description Пример
account_id строка Идентификатор учетной записи Azure Databricks. 7af234db-66d7-4db3-bbf0-956098224879
workspace_id строка Идентификатор рабочей области, в которой развернут склад. 123456789012345
warehouse_id строка Идентификатор хранилища SQL, с который связано событие. 123456789012345
event_type строка Тип события хранилища. Допустимые значения: SCALED_UP, SCALED_DOWN, STOPPING, RUNNING, STARTING и STOPPED. SCALED_UP
cluster_count integer Количество кластеров, которые активно выполняются. 2
event_time TIMESTAMP Метка времени события. 2023-07-20T19:13:09.504Z

Примеры запросов

Ниже приведены примеры запросов. Подключите все значения для вашей организации. Вы также можете добавить оповещения в эти запросы, чтобы помочь вам оставаться в курсе изменений в хранилищах. См. статью "Создание оповещения".

Используйте следующие примеры запросов, чтобы получить представление о поведении хранилища:

Какие склады активно работают и как долго?

Этот запрос определяет, какие склады в настоящее время активны, а также время выполнения в часах.

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
)

Возможность оповещения: как администратор рабочей области может быть оповещен, если хранилище работает дольше, чем ожидалось. Например, результаты запроса можно использовать для задания условия генерации оповещений при превышении определенного порогового значения.

Определение складов, которые масштабируются дольше, чем ожидалось

Этот запрос определяет, какие склады в настоящее время активны, а также время выполнения в часах.

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
   )

Возможность генерации оповещений: оповещения об этом условии помогут отслеживать ресурсы и затраты. Вы можете задать оповещение о том, когда превышение шкалы часов превышает определенный предел.

Склады, начинающиеся в первый раз

Этот запрос сообщает о новых хранилищах, которые начинаются в первый раз.

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
   )

Возможность оповещения: оповещение о новых хранилищах может помочь вашей организации отслеживать выделение ресурсов. Например, можно задать оповещение, которое активируется каждый раз при запуске нового хранилища.

Изучение расходов на выставление счетов

Если вы хотите понять, что конкретно делает склад для создания счетов, этот запрос может сообщить точные даты и время масштабирования хранилища вверх или вниз или начать и остановить.

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

Какие склады не использовались за последние 30 дней?

Этот запрос помогает определить неиспользуемые ресурсы, предоставляя возможность оптимизации затрат.

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

Возможность оповещения: получение оповещения о неиспользуемых ресурсах может помочь вашей организации оптимизировать затраты. Например, можно задать оповещение, которое активируется при обнаружении неиспользуемого хранилища.

Склады с наибольшим временем простоя в месяц

В этом запросе показано, какие склады использовались чаще всего в течение определенного месяца. Этот запрос использует июль в качестве примера.

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

Возможность оповещений: может потребоваться отслеживать хранилища с высоким уровнем использования. Например, можно задать оповещение, которое активируется, когда время простоя для хранилища превышает определенное пороговое значение.

Склады, затрачиваемые на максимальное масштабирование в течение месяца

Этот запрос сообщает о хранилищах, которые потратили значительное время в масштабируемом состоянии в течение месяца. Этот запрос использует июль в качестве примера.

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;

Возможность оповещений: может потребоваться отслеживать хранилища с высоким уровнем использования. Например, можно задать оповещение, которое активируется, когда время простоя для хранилища превышает определенное пороговое значение.