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のinfoの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:マテリアライズドビューは独自のパーティションを管理します。EXPR:マテリアライズドビューのパーティションは式によって定義されます。
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はマテリアライズドビューがどのようにパーティション化されているかを表示します。FOLLOW_BASE_TABLEはマテリアライズドビューがベーステーブルのパーティションカラムに従うことを意味します。SELF_MANAGEはマテリアライズドビューが独自のパーティションを管理することを意味します。EXPRはマテリアライズドビューが式ベースのパーティション定義を使用することを意味します。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 |
+-----------------+------------------+--------+---------+----------+---------------------+---------------------+