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