MV_INFOS
説明
非同期マテリアライズドビュー用の一時テーブルを生成するテーブル関数で、特定のデータベースで作成された非同期マテリアライズドビューに関する情報を表示できます。
構文
MV_INFOS("database"="<database>")
パラメータ
| パラメータ | 説明 |
|---|---|
<database> | 必須。String型。非同期マテリアライズドビューのメタデータを照会したいデータベース名。 |
戻り値
このテーブル関数は、非同期マテリアライズドビューを記述する0行以上の行を返します。関数自体はNULLを返しません。対応するメタデータが利用できない場合、個々のフィールドは空またはNULLになることがあります。
| フィールド | 型 | 説明 |
|---|---|---|
| Id | BIGINT | マテリアライズドビューID |
| Name | TEXT | マテリアライズドビュー名 |
| JobName | TEXT | マテリアライズドビューに対応するリフレッシュジョブの名前。jobs("type"="mv")およびtasks("type"="mv")の照会に使用できます。 |
| State | TEXT | マテリアライズドビューのメタデータ状態。可能な値:INIT、NORMAL、SCHEMA_CHANGE。 |
| SchemaChangeDetail | TEXT | StateがSCHEMA_CHANGEになる理由。マテリアライズドビューがスキーマ変更状態でない場合は空。 |
| RefreshState | TEXT | 最新のリフレッシュの状態。可能な値:INIT、SUCCESS、FAIL。 |
| RefreshInfo | TEXT | マテリアライズドビューに定義されたリフレッシュ戦略。ビルドモード、リフレッシュ方法、トリガーモードを含みます。 |
| QuerySql | TEXT | マテリアライズドビューに定義されたSQLクエリ |
| EnvInfo | TEXT | マテリアライズドビューが作成された時の環境情報 |
| MvProperties | TEXT | マテリアライズドビューのプロパティ |
| MvPartitionInfo | TEXT | マテリアライズドビューのパーティション情報 |
| SyncWithBaseTables | BOOLEAN | マテリアライズドビューのデータがベーステーブルと同期されているかどうか。どのパーティションが同期されていないかを確認するには、SHOW PARTITIONSを使用してください。 |
RefreshInfoはBUILD <BuildMode> REFRESH <RefreshMethod> ON <RefreshTrigger> [schedule]として表示されます。各部分の意味は、以下のenum セクションで説明されています。
MV情報のenumフィールド
以下のenumフィールドは、マテリアライズドビューの定義と健全性を確認する際によく使用されます:
State:マテリアライズドビューのメタデータ状態。INIT:マテリアライズドビューは作成されましたが、まだ通常の使用可能なメタデータ状態に達していません。NORMAL:マテリアライズドビューのメタデータは正常です。これはほとんどの場合に期待される状態です。SCHEMA_CHANGE:ベーステーブルまたは関連オブジェクトのスキーマ変更がこのマテリアライズドビューに影響しました。理由についてはSchemaChangeDetailを確認してください。マテリアライズドビューは通常直接照会できますが、正常にリフレッシュされるまで透過的な書き換えには利用できない場合があります。
RefreshState:最新のリフレッシュの結果状態。INIT:まだリフレッシュ結果が記録されていません。SUCCESS:最新のリフレッシュが正常に完了しました。FAIL:最新のリフレッシュが失敗しました。JobNameを使用してtasks("type"="mv")を照会し、失敗したタスクのErrorMsgを確認してください。
RefreshInfo.BuildMode:Dorisがマテリアライズドビューのデータをビルドするタイミング。IMMEDIATE:作成後すぐにマテリアライズドビューをビルドします。DEFERRED:作成時にはビルドしません。新しいデータを取得する前に、後でリフレッシュが必要です。
RefreshInfo.RefreshMethod:Dorisがリフレッシュするデータを選択する方法。COMPLETE:常にマテリアライズドビューを完全にリフレッシュします。AUTO:Dorisがすべてのパーティションをリフレッシュするか、変更されたパーティションのみをリフレッシュするかを決定します。
RefreshInfo.RefreshTrigger:リフレッシュタスクをトリガーするもの。MANUAL:リフレッシュは手動でトリガーされます。COMMIT:関連するベーステーブルのデータ変更によってリフレッシュがトリガーされます。SCHEDULE:スケジュールによってリフレッシュがトリガーされます。スケジュールの詳細はRefreshInfoのON SCHEDULEの後に表示されます。
MvPartitionInfo.partitionType:マテリアライズドビューがパーティション化される方法。FOLLOW_BASE_TABLE:マテリアライズドビューのパーティションはベーステーブルのパーティション列に従います。SELF_MANAGE:マテリアライズドビューが独自のパーティションを管理します。
Version
Doris 2.1.xはMvPartitionInfo.partitionTypeのFOLLOW_BASE_TABLEとSELF_MANAGEをサポートします。EXPRパーティション型はDoris 3.0.0以降でサポートされています。
SyncWithBaseTables:マテリアライズドビューのデータがベーステーブルと同期されているかどうか。1またはtrue:同期されています。0またはfalse:完全に同期されていません。パーティション化されたマテリアライズドビューの場合、SHOW PARTITIONS FROM <mv_name>を使用してパーティションレベルの同期を確認してください。
例
データベース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`
EnvInfo: EnvInfo{ctlId='0', dbId='16813'}
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はこのマテリアライズドビューのリフレッシュジョブ名です。ジョブやリフレッシュタスクのクエリに使用します。例:select * from jobs("type"="mv") where Name = "inner_mtmv_19494";。StateはNORMALで、これはマテリアライズドビューのメタデータが正常であることを意味します。INITはマテリアライズドビューが作成されたばかり、または初期化されたことを意味します。SCHEMA_CHANGEはベーステーブルでのスキーマ変更がこのマテリアライズドビューに影響したことを意味します。この状態ではSchemaChangeDetailを確認してください。SchemaChangeDetailはStateがSCHEMA_CHANGEでないため空です。RefreshStateはSUCCESSで、これは最新のリフレッシュが成功したことを意味します。INITは成功したリフレッシュ状態がまだ記録されていないことを意味します。FAILは最新のリフレッシュが失敗したことを意味します。JobNameを使用してtasks("type"="mv")をクエリし、失敗したタスクとそのErrorMsgを見つけてください。RefreshInfoはBUILD DEFERRED REFRESH AUTO ON MANUALです。BUILD DEFERREDはマテリアライズドビューが作成時にすぐにビルドされなかったことを意味します。REFRESH AUTOはDorisがすべてのパーティションをリフレッシュするか、変更されたパーティションのみをリフレッシュするかを決定することを意味します。ON MANUALはリフレッシュがスケジュールではなく手動でトリガーされることを意味します。QuerySqlはマテリアライズドビューのクエリ定義です。EnvInfoはマテリアライズドビューが作成された時の環境情報を記録します。MvPropertiesはマテリアライズドビューのプロパティを表示します。この例では、パーティション同期はpartition_sync_limit=100とpartition_sync_time_unit=YEARによって制限されています。MvPartitionInfoはマテリアライズドビューがどのようにパーティション化されているかを表示します。Doris 2.1.xでは、FOLLOW_BASE_TABLEはマテリアライズドビューがベーステーブルのパーティション列に従うことを意味し、SELF_MANAGEはマテリアライズドビューが独自のパーティションを管理することを意味します。EXPRパーティションタイプはDoris 3.0.0以降でサポートされています。SyncWithBaseTablesは1で、これはマテリアライズドビューのデータがベーステーブルと同期されていることを意味します。0は完全に同期されていないことを意味します。パーティション化されたマテリアライズドビューの場合、SHOW PARTITIONS FROM <mv_name>を使用してパーティションレベルの同期を確認してください。
このマテリアライズドビューの最新のリフレッシュタスクを表示するには:
select TaskId, JobName, MvName, Status, ErrorMsg, CreateTime, FinishTime
from tasks("type"="mv")
where JobName = "inner_mtmv_19494"
order by CreateTime desc
limit 1;
+-----------------+------------------+--------+---------+----------+---------------------+---------------------+
| TaskId | JobName | MvName | Status | ErrorMsg | CreateTime | FinishTime |
+-----------------+------------------+--------+---------+----------+---------------------+---------------------+
| 437156301250803 | inner_mtmv_19494 | mv1 | SUCCESS | | 2025-01-07 22:13:48 | 2025-01-07 22:17:45 |
+-----------------+------------------+--------+---------+----------+---------------------+---------------------+