实例化视图用状态和属性的结合来实现特征化。实例化视图的状态反映视图是否可由数据库服务器使用。实例化视图的属性反映视图中数据的状态。
确定现有实例化视图的状态和属性的最佳方法是使用 sa_materialized_view_info 系统过程。请参见sa_materialized_view_info 系统过程。
还可以通过以下方法查看有关实例化视图的信息:在 Sybase Central 中选择 [视图] 文件夹,然后查看为各个视图提供的详细信息。或者通过查询 SYSTAB 和 SYSVIEW 系统视图。请参见SYSTAB 系统视图和SYSVIEW 系统视图。
实例化视图有两个可能状态:
已启用 如果实例化视图已成功编译,可供数据库服务器使用,则实例化视图状态为已启用。已启用实例化视图中可能没有数据。例如,如果截断已启用实例化视图中的数据,它将更改为已启用和未初始化。如果在指定实例化视图的定义的基础表中没有数据,实例化视图可以初始化但为空。这与实例化视图没有数据不同,因为它未初始化。
已禁用 实例化视图只有在以某种方式显式禁用后才会具有已禁用状态,例如使用 ALTER MATERIALIZED VIEW ...DISABLE 语句来禁用每个相关实例化视图。如果禁用实例化视图,将删除视图的数据和索引。此外,禁用快速视图时,它将更改为手动视图。
要确定视图是已启用还是已禁用,请使用 sa_materialized_view_info 系统过程返回视图的 Status 属性。请参见sa_materialized_view_info 系统过程。
有关启用和禁用实例化视图的信息,请参见启用和禁用实例化视图。
优化程序计算是否使用视图时使用实例化视图属性。下表介绍 sa_materialized_view_info 系统过程返回的实例化视图的属性:
Status Status 属性指示视图是已启用还是已禁用。
DataStatus DataStatus 属性反映视图中数据的状态。例如,通过该属性可了解视图是否已初始化以及视图是否已失效。如果自上次刷新实例化视图以后基础表中的数据已更改,则手动视图失效。快速视图从不失效。
ViewLastRefreshed ViewLastRefreshed 属性指出上次刷新视图的时间。
DateLastModified DateLastModified 属性指出视图失效时,任何基础表中数据的最新修改时间。
AvailForOptimization AvailForOptimization 属性反映视图是否可供优化程序使用。
RefreshType RefreshType 属性指出视图是手动视图还是快速视图。
有关每个属性的可能值的列表,请参见sa_materialized_view_info 系统过程。
虽然没有属性能让您了解是否能够将手动视图转换为快速视图,但您可以使用 sa_materialized_view_can_be_immediate 系统过程确定此问题。请参见sa_materialized_view_can_be_immediate 系统过程。
对实例化视图执行的操作(如变更、刷新和截断)影响视图的状态和属性。下图显示这些任务如何影响实例化视图的状态和某些属性。
在该图中,每个灰色方块是一个实例化视图;快速视图由术语 IMMEDIATE 标识,手动视图由术语 MANUAL 标识。灰色方框之间的连接符中的术语 ALTER 是 ALTER MATERIALIZED VIEW 的简写。尽管图中显示了用于更改实例化视图状态的 SQL 语句,但您也可以使用 Sybase Central 执行这些活动。
图中需要注意的一些重要概念如下:
创建实例化视图时,视图是已启用手动视图,并且未初始化(不包含数据)。
刷新未初始化视图时,视图变为已初始化(填入了数据)。
从手动视图更改为快速视图需要几个步骤,对于快速视图还有更多限制。请参见将手动视图更改为快速视图和快速视图的附加限制。
禁用实例化视图时:
数据被删除
视图转为未初始化
索引被删除
快速视图转为手动视图
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |