Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - SQL 的用法 » 表、视图和索引 » 实例化视图

 

使用实例化视图提高性能

在正确的条件中使用时,实例化视图可通过预先计算开销巨大的操作(例如,连接以及将结果以存储在磁盘上的视图的形式进行存储)来显著提高性能。当优化程序决定采用最有效的方式来满足查询时,即使查询中未引用实例化视图,优化程序也会考虑使用实例化视图。

在设计应用程序时,可考虑为频繁执行的开销巨大的查询或查询中开销巨大的部分(如涉及密集集合和连接操作的查询)定义实例化视图。实例化视图专用于在以下环境中提高性能:

  • 数据库很大

  • 频繁的查询导致对大量数据执行重复性集合和连接操作

  • 对基础数据的更改相对很少

  • 不严格要求访问即时数据

使用实例化视图之前,请考虑以下要求、设置和限制:

  • 磁盘空间需求   由于实例化视图包含基表数据的副本,因此可能需要为数据库分配额外的磁盘空间来容纳所创建的实例化视图。需要认真考虑额外的空间需求,以便在使用实例化视图的优势与开销之间找到平衡点。

  • 维护开销和数据更新度需求   基础表中的数据更改时需要刷新实例化视图中的数据。需要通过考虑如下潜在的冲突因素来确定刷新实例化视图的频率:

    • 基础数据的更改频率   频繁或大量的数据更改会使手动视图失效。如果数据更新度很重要,考虑使用快速视图。

    • 刷新的开销   根据每个实例化视图的基础查询的复杂程度和涉及数据量的大小,刷新所需的计算可能会需要庞大的开销,频繁刷新实例化视图可能会给数据库服务器带来无法承受的负荷。此外,刷新操作期间实例化视图不可用。

    • 应用程序的数据更新度需求   如果数据库服务器使用失效的实例化视图,则它将失效的数据提供给应用程序。失效数据是不再表示基础表中数据的当前状态的数据。过期失效程度受实例化视图的刷新频率制约。应用程序必须能够确定其可以容许的失效程度,以提高性能。

    • 数据一致性需求   刷新实例化视图时,必须确定刷新实例化视图时所应保持的一致性。

  • 在优化中使用   您应验证优化程序在执行查询时是否考虑到了实例化视图。通过在 Interactive SQL 中查看查询的图形式计划的 [高级详细信息] 窗口,可以看到用于特定查询的实例化视图的列表。

    通过查看由优化程序枚举的访问计划,也可以在 Sybase Central 中使用 [应用程序分析] 模式来确定查询的枚举阶段是否将实例化视图考虑在内。要查看优化程序所枚举的访问计划,跟踪功能必须打开并且必须配置为包括 OPTIMIZATION_LOGGING 跟踪类型。

  • 数据变更操作   实例化视图为只读;不能对它们使用数据变更操作,如 INSERT、LOAD、DELETE 和 UPDATE。

  • 键、约束、触发器和项目   在实例化视图上虽然可以创建索引,但不能创建键、约束、触发器或项目。

 另请参见

实例化视图和视图依赖性
将刷新类型设置为手动还是快速
实例化视图限制