メインコンテンツまでスキップ
バージョン: 4.x

MV_INFOS

説明

非同期マテリアライズドビュー用の一時テーブルを生成するテーブル関数で、特定のデータベースで作成された非同期マテリアライズドビューに関する情報を表示できます。

構文

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

パラメータ

パラメータ説明
<database>必須。String型。非同期マテリアライズドビューのメタデータをクエリしたいデータベースの名前。

戻り値

このテーブル関数は、非同期マテリアライズドビューを説明する0行以上の行を返します。関数自体はNULLを返しません。対応するメタデータが利用できない場合、個々のフィールドは空またはNULLになることがあります。

フィールド説明
IdBIGINTマテリアライズドビューID
NameTEXTマテリアライズドビュー名
JobNameTEXTマテリアライズドビューに対応するリフレッシュジョブの名前。jobs("type"="mv")およびtasks("type"="mv")をクエリするために使用できます。
StateTEXTマテリアライズドビューのメタデータ状態。可能な値:INITNORMALSCHEMA_CHANGE
SchemaChangeDetailTEXTStateSCHEMA_CHANGEになる理由。マテリアライズドビューがスキーマ変更状態でない場合は空。
RefreshStateTEXT最新のリフレッシュの状態。可能な値:INITSUCCESSFAIL
RefreshInfoTEXTマテリアライズドビューに定義されたリフレッシュ戦略(ビルドモード、リフレッシュ方法、トリガーモードを含む)。
QuerySqlTEXTマテリアライズドビューに定義されたSQLクエリ
EnvInfoTEXTマテリアライズドビューが作成されたときの環境情報
MvPropertiesTEXTマテリアライズドビューのプロパティ
MvPartitionInfoTEXTマテリアライズドビューのパーティション情報
SyncWithBaseTablesBOOLEANマテリアライズドビューのデータがベーステーブルと同期されているかどうか。どのパーティションが同期されていないかを確認するには、SHOW PARTITIONSを使用してください。

RefreshInfoBUILD <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:リフレッシュはスケジュールによってトリガーされます。スケジュールの詳細はRefreshInfoON 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

この結果において:

  • IdName はマテリアライズドビューを識別します。
  • JobName は、このマテリアライズドビューのリフレッシュジョブ名です。ジョブやリフレッシュタスクをクエリするために使用します(例:select * from jobs("type"="mv") where Name = "inner_mtmv_19494";)。
  • StateNORMAL の場合、マテリアライズドビューのメタデータが正常であることを意味します。INIT はマテリアライズドビューが作成されたばかりまたは初期化されたことを意味します。SCHEMA_CHANGE はベーステーブルのスキーマ変更がこのマテリアライズドビューに影響したことを意味し、この状態では SchemaChangeDetail を確認してください。
  • SchemaChangeDetailStateSCHEMA_CHANGE ではないため空です。
  • RefreshStateSUCCESS の場合、最新のリフレッシュが成功したことを意味します。INIT はまだ成功したリフレッシュ状態が記録されていないことを意味します。FAIL は最新のリフレッシュが失敗したことを意味し、JobNametasks("type"="mv") をクエリして失敗したタスクとその ErrorMsg を見つけてください。
  • RefreshInfoBUILD DEFERRED REFRESH AUTO ON MANUAL です。BUILD DEFERRED はマテリアライズドビューが作成時に即座に構築されなかったことを意味します。REFRESH AUTO はDorisがすべてのパーティションをリフレッシュするか変更されたパーティションのみをリフレッシュするかを決定することを意味します。ON MANUAL はリフレッシュがスケジュールではなく手動でトリガーされることを意味します。
  • QuerySql はマテリアライズドビューのクエリ定義です。
  • EnvInfo はマテリアライズドビューが作成された時の環境情報を記録します。
  • MvProperties はマテリアライズドビューのプロパティを示します。この例では、パーティション同期は partition_sync_limit=100partition_sync_time_unit=YEAR によって制限されています。
  • MvPartitionInfo はマテリアライズドビューがどのようにパーティション化されているかを示します。FOLLOW_BASE_TABLE はマテリアライズドビューがベーステーブルのパーティションカラムに従うことを意味します。SELF_MANAGE はマテリアライズドビューが独自のパーティションを管理することを意味します。EXPR はマテリアライズドビューが式ベースのパーティション定義を使用することを意味します。
  • SyncWithBaseTables1 の場合、マテリアライズドビューのデータがベーステーブルと同期していることを意味します。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 |
+-----------------+------------------+--------+---------+----------+---------------------+---------------------+