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 セクションで説明されています。
MVinfo 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 |
+-----------------+------------------+--------+---------+----------+---------------------+---------------------+