MV_INFOS
描述
表函数,生成异步物化视图临时表,可以查看某个 db 中创建的异步物化视图信息。
语法
MV_INFOS("database"="<database>")
必填参数 (Required Parameters)
<database>
指定需要查询的集群数据库名
返回值
| 字段名称 | 类型 | 说明 |
|---|---|---|
| Id | BIGINT | 物化视图 id |
| Name | TEXT | 物化视图 Name |
| JobName | TEXT | 物化视图对应的刷新 job 名称,可用于查询 jobs("type"="mv") 和 tasks("type"="mv")。 |
| State | TEXT | 物化视图元数据状态。可取值:INIT、NORMAL、SCHEMA_CHANGE。 |
| SchemaChangeDetail | TEXT | State 变为 SCHEMA_CHANGE 的原因。物化视图不处于 schema change 状态时通常为空。 |
| RefreshState | TEXT | 最近一次刷新状态。可取值:INIT、SUCCESS、FAIL。 |
| RefreshInfo | TEXT | 物化视图定义的刷新策略信息,包括构建方式、刷新方式和触发方式。 |
| QuerySql | TEXT | 物化视图定义的查询语句 |
| MvProperties | TEXT | 物化视属性 |
| MvPartitionInfo | TEXT | 物化视图的分区信息 |
| SyncWithBaseTables | BOOLEAN | 物化视图数据是否和基表数据同步。如需查看哪个分区不同步,请使用 SHOW PARTITIONS。 |
RefreshInfo 的展示格式为 BUILD <BuildMode> REFRESH <RefreshMethod> ON <RefreshTrigger> [schedule]。每一部分的含义见下面的枚举字段说明。
MV 信息枚举字段说明
查看物化视图定义和健康状态时,下面这些枚举字段最常用:
State:物化视图元数据状态。INIT:物化视图已创建,但还没有进入正常可用的元数据状态。NORMAL:物化视图元数据正常。大多数情况下应该是这个状态。SCHEMA_CHANGE:基表或相关对象的 schema 变更影响了该物化视图。需要查看SchemaChangeDetail了解原因。此时物化视图通常仍可直接查询,但在刷新成功前可能不能用于透明改写。
RefreshState:最近一次刷新结果状态。INIT:还没有记录刷新结果。SUCCESS:最近一次刷新成功。FAIL:最近一次刷新失败。可以用JobName查询tasks("type"="mv"),查看失败 task 的ErrorMsg。
RefreshInfo.BuildMode:Doris 什么时候构建物化视图数据。IMMEDIATE:创建物化视图后立即构建。DEFERRED:创建时不立即构建,需要后续刷新后才有新鲜数据。
RefreshInfo.RefreshMethod:Doris 如何选择要刷新的数据。COMPLETE:总是全量刷新物化视图。AUTO:Doris 自动判断刷新全部分区还是只刷新变更分区。
RefreshInfo.RefreshTrigger:什么动作触发刷新 task。MANUAL:手动触发刷新。COMMIT:相关基表数据变更后触发刷新。SCHEDULE:按调度周期触发刷新。调度细节会出现在RefreshInfo的ON SCHEDULE后面。
MvPartitionInfo.partitionType:物化视图的分区方式。FOLLOW_BASE_TABLE:物化视图分区跟随基表分区列。SELF_MANAGE:物化视图自己管理分区。EXPR:物化视图使用表达式定义分区。
SyncWithBaseTables:物化视图数据是否和基表同步。1或true:已同步。0或false:未完全同步。对于分区物化视图,可以用SHOW PARTITIONS FROM <mv_name>查看分区级同步状态。
示例
查看 test 数据库下名为 mv1 的物化视图。
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
该结果中:
Id和Name标识该物化视图。JobName是该物化视图的刷新 job 名称。可以通过该字段继续查询 job 或刷新 task,例如select * from jobs("type"="mv") where Name = "inner_mtmv_19494";。State为NORMAL,表示物化视图元数据状态正常。INIT表示物化视图刚创建或初始化中;SCHEMA_CHANGE表示基表 schema 变更影响了该物化视图,此时需要查看SchemaChangeDetail。SchemaChangeDetail为空,因为当前State不是SCHEMA_CHANGE。RefreshState为SUCCESS,表示最近一次刷新成功。INIT表示尚未记录成功刷新状态;FAIL表示最近一次刷新失败,此时可使用JobName查询tasks("type"="mv"),查看失败 task 的ErrorMsg。RefreshInfo为BUILD DEFERRED REFRESH AUTO ON MANUAL。BUILD DEFERRED表示创建物化视图时不立即构建;REFRESH AUTO表示 Doris 自动判断刷新全部分区还是部分分区;ON MANUAL表示刷新由手动触发,而不是定时触发。QuerySql是物化视图定义的查询 SQL。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>查看分区级同步状态。
查看该物化视图最近一次刷新 task:
select *
from tasks("type"="mv")
where JobName = "inner_mtmv_19494"
order by CreateTime desc
limit 1;