Справочник по системной таблице событий хранилища
Внимание
Эта системная таблица находится в общедоступной предварительной версии. Чтобы получить доступ к таблице, в каталоге должна быть включена system
схема. Дополнительные сведения см. в разделе "Включение схем системной таблицы".
В этой статье вы узнаете, как использовать системную таблицу событий хранилища для мониторинга хранилищ 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 | Метка времени, когда событие произошло в формате UTC. | 2023-07-20T19:13:09.504Z |
Примеры запросов
Ниже приведены примеры запросов. Подключите все значения для вашей организации. Вы также можете добавить оповещения в эти запросы, чтобы помочь вам оставаться в курсе изменений в хранилищах. См. статью "Создание оповещения".
Используйте следующие примеры запросов, чтобы получить представление о поведении хранилища:
- Какие склады активно работают и как долго?
- Определение складов, которые масштабируются дольше, чем ожидалось
- Склады, начинающиеся в первый раз
- Изучение расходов на выставление счетов
- Какие склады не использовались за последние 30 дней?
- Склады с наибольшим временем простоя в месяц
- Склады, затрачиваемые на максимальное масштабирование в течение месяца
Какие склады активно работают и как долго?
Этот запрос определяет, какие склады в настоящее время активны, а также время выполнения в часах.
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
Возможность оповещений: может потребоваться отслеживать хранилища с высоким уровнем использования. Например, можно задать оповещение, которое активируется, когда время простоя для хранилища превышает определенное пороговое значение.