.disable | .enable 物化视图

使用 “版本 ”下拉列表切换服务。 了解有关导航的详细信息。
适用于:✅ Azure 数据资源管理器

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

注意

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

权限

必须至少具有 Materialized View Admin 才能运行这些命令。

语法

.enable | disable materialized-view MaterializedViewName

详细了解语法约定。

参数

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

返回

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

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

输出架构:

客户 类型 说明
客户 string 具体化视图的名称。
SourceTable string 定义视图的源表的名称。
查询 string 具体化视图的查询定义。
MaterializedTo datetime 源表中的最大具体化 ingestion_time() 时间戳。 有关详细信息,请参阅具体化视图的工作原理。
LastRun datetime 上次运行具体化的时间。
LastRunResult string 上次运行的结果。 如果运行成功,则返回 Completed,否则返回 Failed。
IsHealthy bool false 仅当视图停滞时:
• 至少五次连续具体化尝试失败,并且 MaterializedTo 超过一小时,并且尚未赶上数据库游标。
• 视图状态为 FAILED。
• 一种正在赶上、处理引入突发或等待并发槽的视图, true即使其年龄超过一小时也是如此。
• 禁用的视图也可以显示为 true。 检查 IsEnabled 也。
已启用 bool 如果视图已启用,则为 true(请参阅禁用或启用具体化视图)。
文件夹 string 在其中创建具体化视图的文件夹。
DocString string 分配给具体化视图的说明。
AutoUpdateSchema bool 视图是否已启用自动更新。
EffectiveDateTime datetime 视图的生效日期时间,在创建期间确定(请参阅 .create materialized-view)。
回溯 timespan 限制预期重复或更新的时间段的时间跨度。 有关详细信息,请参阅 回溯期。
LookbackColumn string 视图中的 string 列,用作回溯期的引用。 如果此列为空,但 lookback 具有值,则具体化视图使用默认回溯。 有关详细信息,请参阅 回溯期。

示例

启用具体化视图

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

.enable materialized-view ViewName

输出

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

禁用具体化视图

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

.disable materialized-view ViewName

输出

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

备注

禁用具体化视图

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

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

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

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

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

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

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