Перейти к содержимому
Последнее обновление

MV_INFOS

Описание​

Табличная функция, создающая временные таблицы для асинхронных материализованных представлений и позволяющая просматривать информацию об асинхронных материализованных представлениях, созданных в определённой базе данных.

Синтаксис​

MV_INFOS("database"="<database>")

Обязательные параметры​

<database>

Укажите имя базы данных кластера, информацию о которой нужно получить

Возвращаемое значение​

ПолеТипОписание
IdBIGINTИдентификатор материализованного представления
NameTEXTИмя материализованного представления
JobNameTEXTИмя задания обновления, соответствующего материализованному представлению. Его можно использовать для запросов к jobs("type"="mv") и tasks("type"="mv").
StateTEXTСостояние метаданных материализованного представления. Возможные значения: INIT, NORMAL и SCHEMA_CHANGE.
SchemaChangeDetailTEXTПричина перехода State в SCHEMA_CHANGE. Пусто, если материализованное представление не находится в состоянии изменения схемы.
RefreshStateTEXTСостояние последнего обновления. Возможные значения: INIT, SUCCESS и FAIL.
RefreshInfoTEXTСтратегия обновления, заданная для материализованного представления, включая режим построения, метод обновления и режим запуска.
QuerySqlTEXTSQL-запрос, заданный для материализованного представления
MvPropertiesTEXTСвойства материализованного представления
MvPartitionInfoTEXTИнформация о разделах материализованного представления
SyncWithBaseTablesBOOLEANСинхронизированы ли данные материализованного представления с его базовыми таблицами. Чтобы узнать, какой раздел не синхронизирован, используйте SHOW PARTITIONS.
IvmBaseTableStreamsTEXTСоответствие между базовыми таблицами IVM и внутренними Table Streams, которые Doris создаёт автоматически. Обычно пусто для материализованных представлений, не использующих IVM.

RefreshInfo отображается в виде BUILD <BuildMode> REFRESH <RefreshMethod> ON <RefreshTrigger> [schedule]. Значение каждой части описано ниже в разделе о перечисляемых полях.

Поля сведений о материализованном представлении с перечисляемыми значениями​

Следующие поля с перечисляемыми значениями часто используются при проверке определений и состояния материализованных представлений:

  • State: состояние метаданных материализованного представления.
    • INIT: материализованное представление создано, но его метаданные ещё не перешли в нормальное состояние, позволяющее его использовать.
    • NORMAL: метаданные материализованного представления в нормальном состоянии. Это ожидаемое состояние в большинстве случаев.
    • SCHEMA_CHANGE: изменение схемы базовой таблицы или связанного объекта затронуло это материализованное представление. Причину можно узнать в SchemaChangeDetail. Обычно к материализованному представлению можно обращаться напрямую, но оно может быть недоступно для прозрачного переписывания запросов до успешного обновления.
  • RefreshState: состояние результата последнего обновления.
    • INIT: результат обновления ещё не зарегистрирован.
    • SUCCESS: последнее обновление завершилось успешно.
    • FAIL: последнее обновление завершилось ошибкой. Используйте JobName для запроса к tasks("type"="mv") и проверьте поле ErrorMsg у задачи, завершившейся ошибкой.
  • RefreshInfo.BuildMode: когда Doris строит данные материализованного представления.
    • IMMEDIATE: построить материализованное представление сразу после создания.
    • DEFERRED: не строить его при создании. Чтобы материализованное представление содержало актуальные данные, его потребуется обновить позже.
  • RefreshInfo.RefreshMethod: как Doris выбирает данные для обновления.
    • COMPLETE: всегда обновлять материализованное представление полностью.
    • PARTITIONS: пересчитывать изменившиеся разделы материализованного представления.
    • INCREMENTAL: использовать инкрементальное обслуживание представлений (IVM) для обработки изменений на уровне строк.
    • AUTO: Doris автоматически выбирает IVM, обновление разделов или полное обновление.
  • RefreshInfo.RefreshTrigger: что запускает задачи обновления.
    • MANUAL: обновление запускается вручную.
    • COMMIT: обновление запускается при изменении данных в связанных базовых таблицах.
    • SCHEDULE: обновление запускается по расписанию. Подробности расписания отображаются после ON SCHEDULE в RefreshInfo.
  • MvPartitionInfo.partitionType: как материализованное представление разбивается на разделы.
    • FOLLOW_BASE_TABLE: разделы материализованного представления следуют столбцу секционирования базовой таблицы.
    • SELF_MANAGE: материализованное представление самостоятельно управляет своими разделами.
    • EXPR: разделы материализованного представления определяются выражением.
  • SyncWithBaseTables: синхронизированы ли данные материализованного представления с базовыми таблицами.
    • 1 или true: синхронизированы.
    • 0 или false: синхронизированы не полностью. Для материализованных представлений с разделами используйте SHOW PARTITIONS FROM <mv_name>, чтобы проверить синхронизацию на уровне разделов.
  • IvmBaseTableStreams: соответствие между базовыми таблицами, используемыми IVM, и его внутренними Streams. Внутренними Streams управляет Doris; не считывайте, не сбрасывайте и не удаляйте их вручную. См. Инкрементальное обслуживание представлений (IVM).

Примеры​

Просмотр материализованного представления в базе данных test.

select *
from mv_infos("database"="test")
where Name = "mv1"\G
*************************** 1. row ***************************
Id: 19494
Name: mv1
JobName: inner_mtmv_19494
State: NORMAL
SchemaChangeDetail:
RefreshState: SUCCESS
RefreshInfo: BUILD DEFERRED REFRESH AUTO ON MANUAL
QuerySql: SELECT `internal`.`test`.`user`.`k2`, `internal`.`test`.`user`.`k3` FROM `internal`.`test`.`user`
MvProperties: {partition_sync_limit=100, partition_sync_time_unit=YEAR}
MvPartitionInfo: MTMVPartitionInfo{partitionType=FOLLOW_BASE_TABLE, relatedTable=user, relatedCol='k2', partitionCol='k2'}
SyncWithBaseTables: 1
IvmBaseTableStreams: \N

В этом результате:

  • Id и Name идентифицируют материализованное представление.
  • JobName — имя задания обновления для этого материализованного представления. Используйте его для запроса задания или задач обновления, например select * from jobs("type"="mv") where Name = "inner_mtmv_19494";.
  • State имеет значение NORMAL, что означает нормальное состояние метаданных материализованного представления. INIT означает, что материализованное представление только что создано или инициализировано. SCHEMA_CHANGE означает, что изменение схемы базовой таблицы затронуло это материализованное представление; в этом состоянии проверьте SchemaChangeDetail.
  • SchemaChangeDetail пусто, поскольку State не имеет значения SCHEMA_CHANGE.
  • RefreshState имеет значение SUCCESS, что означает успешное завершение последнего обновления. INIT означает, что состояние успешного обновления ещё не зарегистрировано. FAIL означает, что последнее обновление завершилось ошибкой; выполните запрос к tasks("type"="mv") с помощью JobName, чтобы найти задачу, завершившуюся ошибкой, и её поле ErrorMsg.
  • RefreshInfo имеет значение BUILD DEFERRED REFRESH AUTO ON MANUAL. BUILD DEFERRED означает, что материализованное представление не было построено сразу при создании. REFRESH AUTO означает, что Doris решает, обновлять все разделы или только изменившиеся. ON MANUAL означает, что обновление запускается вручную, а не по расписанию.
  • QuerySql — определение запроса материализованного представления.
  • MvProperties показывает свойства материализованного представления. В этом примере синхронизация разделов ограничена параметрами partition_sync_limit=100 и partition_sync_time_unit=YEAR.
  • MvPartitionInfo показывает, как материализованное представление разбивается на разделы. FOLLOW_BASE_TABLE означает, что материализованное представление следует столбцу секционирования базовой таблицы. SELF_MANAGE означает, что материализованное представление самостоятельно управляет своими разделами. EXPR означает, что материализованное представление использует определение разделов на основе выражения.
  • SyncWithBaseTables имеет значение 1, что означает синхронизацию данных материализованного представления с его базовыми таблицами. 0 означает, что данные синхронизированы не полностью. Для материализованных представлений с разделами используйте SHOW PARTITIONS FROM <mv_name>, чтобы проверить синхронизацию на уровне разделов.
  • IvmBaseTableStreams пусто, поскольку в этом примере не используется IVM.

Чтобы просмотреть последнюю задачу обновления этого материализованного представления:

select *
from tasks("type"="mv")
where JobName = "inner_mtmv_19494"
order by CreateTime desc
limit 1;