.disable | .enable materialized-view

适用于:✅Azure 数据资源管理器

为具体化视图禁用或启用具体化过程。

注意

由于禁用/启用具体化视图会产生一些重要的性能影响,因此在继续使用此命令之前,请确保熟悉这些影响。 有关详细信息,请参阅启用/禁用具体化视图的性能影响部分。

权限

你必须至少具有具体化视图管理员权限才能运行这些命令。

语法

.enable | disable materialized-view MaterializedViewName

详细了解语法约定

参数

客户 类型​​ 必需 说明
MaterializedViewName string ✔️ 具体化视图的名称。

返回

如果具体化视图已处于该命令尝试将其设置到的状态,则命令将失败并显示一条错误,指出是这种情况。

否则,它将返回有关 IsEnabled 属性已更改的具体化视图的详细信息。

输出架构:

名称 Type 说明
Name string 具体化视图的名称。
SourceTable string 定义视图的源表的名称。
查询 string 具体化视图的查询定义。
MaterializedTo datetime 源表中的最大具体化 ingestion_time() 时间戳。 有关详细信息,请参阅具体化视图的工作原理
LastRun datetime 上次运行具体化的时间。
LastRunResult string 上次运行的结果。 如果运行成功,则返回 Completed,否则返回 Failed
IsHealthy bool 当视图被认为正常时为 true,否则为 false。 如果视图在最后一小时之前被成功地具体化(MaterializedTo 大于 ago(1h)),则认为它是正常的。
IsEnabled bool 如果视图已启用,则为 true(请参阅禁用或启用具体化视图)。
Folder string 在其中创建具体化视图的文件夹。
DocString string 分配给具体化视图的说明。
AutoUpdateSchema bool 视图是否已启用自动更新。
EffectiveDateTime datetime 视图的生效日期时间,在创建期间确定(请参阅 .create materialized-view)。
回溯 timespan 时间跨度,用于限制需要重复项的时间段。

示例

启用具体化视图

以下命令启用具体化视图 ViewName:

.enable materialized-view ViewName

输出

名称 SourceTable 查询 MaterializedTo LastRun LastRunResult IsHealthy IsEnabled 文件夹 DocString AutoUpdateSchema EffectiveDateTime 回溯
视图名 TableName TableName | summarize arg_max(Column3, *) by Column1 2023-02-26T16:40:03.3345704Z 2023-02-26T16:44:15.9033667Z 已完成 true true false 2023-02-23T14:01:42.5172342Z

禁用具体化视图

以下命令禁用具体化视图 ViewName:

.disable materialized-view ViewName

输出

名称 SourceTable 查询 MaterializedTo LastRun LastRunResult IsHealthy IsEnabled 文件夹 DocString AutoUpdateSchema EffectiveDateTime 回溯
视图名 TableName TableName | summarize arg_max(Column3, *) by Column1 2023-02-26T16:40:03.3345704Z 2023-02-26T16:44:15.9033667Z 已完成 true false false 2023-02-23T14:01:42.5172342Z

备注

禁用具体化视图

可以通过以下任一方式禁用具体化视图:

  • 系统自动禁用:如果具体化因永久性错误而失败,则会自动禁用具体化视图。 此过程可能在以下情况下发生:
    • 与视图定义不一致的架构更改。
    • 对源表的更改导致具体化视图查询在语义上无效。
  • 显式禁用具体化视图:如果具体化视图对数据库的运行状况产生负面影响(例如,消耗过多的 CPU),请使用 .disable materialized-view 命令禁用该视图。

具体化视图和行级别安全性

如果已禁用某个具体化视图,并且在该视图处于禁用状态时有人在该视图的源表上定义了行级别安全策略,但该具体化视图未定义行级别安全策略,则启用该视图会由于安全原因而失败。 若要缓解此错误,可以:

  • 定义针对具体化视图的行级安全策略。
  • 通过将 allowMaterializedViewsWithoutRowLevelSecurity 属性添加到 enable policy 命令来忽略错误。 例如:
    .enable materialized-view MV with (allowMaterializedViewsWithoutRowLevelSecurity=true)

启用/禁用具体化视图的性能影响

  • 禁用具体化视图后,将暂停具体化,并且不会消耗数据库中的资源。 即使具体化视图处于禁用状态,也可以对其进行查询,但性能可能会很差。 已禁用的具体化视图的性能取决于自禁用后引入到源表的记录数。
  • 可以启用以前已禁用的具体化视图。 具体化视图在重新启用后会继续从中断处具体化,不会跳过任何记录。 如果该视图长时间被禁用,可能需要很长时间才能赶上进度。
  • 仅当怀疑视图正在影响数据库的运行状况时,才建议禁用该视图。