解析分布式分区视图
来源:互联网 发布:北京软件外包公司 编辑:程序博客网 时间:2024/06/05 16:11
SQL Server 2005 查询处理器对分布式分区视图的性能进行优化。分布式分区视图性能的最重要方面是尽量减少成员服务器之间传输的数据量。
SQL Server 2005 生成智能的动态计划,以便有效地利用分布式查询访问远程成员表中的数据:
- 查询处理器首先使用 OLE DB 从每个成员表中检索 CHECK 约束定义。这样,查询处理器就可以在各成员表之间映射键值的分布。
- 查询处理器将 SQL 语句 WHERE 子句中指定的键范围与显示行在成员表中如何分布的映射进行比较。然后查询处理器生成查询执行计划,该计划使用分布式查询只检索那些完成 SQL 语句所需的远程行。也可以采用这种方式生成执行计划:任何对远程成员表数据或元数据的访问,都被延迟到需要这些信息时。
例如,有这样一个系统:其中的客户表在 Server1(CustomerID 从 1 到 3299999)、Server2(CustomerID 从 3300000 到 6599999)和 Server3(CustomerID 从 6600000 到 9999999)间进行分区。
考虑在 Server1 上执行的下列查询所生成的执行计划:
SELECT *FROM CompanyData.dbo.CustomersWHERE CustomerID BETWEEN 3200000 AND 3400000
该查询的执行计划从本地成员表中提取 CustomerID 键值从 3200000 到 3299999 的行,并发出分布式查询从 Server2 中检索键值从 3300000 到 3400000 的行。
SQL Server 2005 查询处理器还可以在查询执行计划中创建动态逻辑,以用于必须生成计划时键值未知的 SQL 语句。例如下面的存储过程:
CREATE PROCEDURE GetCustomer @CustomerIDParameter INTASSELECT *FROM CompanyData.dbo.CustomersWHERE CustomerID = @CustomerIDParameter
SQL Server 2005 无法预测每次执行过程时 @CustomerIDParameter 参数将提供什么键值。因为无法预测键值,所以查询处理器还无法预测必须访问哪个成员表。为了处理这种情况,SQL Server 生成了具有条件逻辑(称为动态筛选)的执行计划,可基于输入参数值来控制访问哪个成员表。假设在 Server1 上执行了 GetCustomer 存储过程,则执行计划逻辑可以表示如下:
IF @CustomerIDParameter BETWEEN 1 and 3299999 Retrieve row from local table CustomerData.dbo.Customer_33ELSEIF @CustomerIDParameter BETWEEN 3300000 and 6599999 Retrieve row from linked table Server2.CustomerData.dbo.Customer_66ELSEIF @CustomerIDParameter BETWEEN 6600000 and 9999999 Retrieve row from linked table Server3.CustomerData.dbo.Customer_99
有时,对即使没有参数化的查询,SQL Server 2005 也生成这些类型的动态执行计划。优化器可以参数化查询以便可以重新使用执行计划。如果优化器参数化引用了分区视图的查询,则优化器不再假设所需行将来自指定的基表。它将必须在执行计划中使用动态筛选。有关详细信息,请参阅简单参数化。
- 解析分布式分区视图
- 创建分布式分区视图
- 分布式分区视图
- 创建分布式分区视图
- SQLServer2005分布式分区视图分解数据表
- sql 2000 分布式分区视图的创建步骤
- 如何利用SQL Server 2005分布式分区视图分解数据表
- MSSQL (分布式)分区视图的创建及其应用
- SQL Server 2005/2008/2012中应用分布式分区视图
- sql Server 2000 分区视图的运用(分布式数据库)
- SQL Server 2005/2008/2012中应用分布式分区视图
- SQL Server 2005/2008/2012中应用分布式分区视图
- SqlServer分区视图
- 同义词/分区/视图
- 视图解析
- 视图解析
- (转)MSSQL 视图详解 基本视图,索引视图,分区视图
- 第8章 视图(加密视图、索引视图、分区视图)
- 写给刚工作的网站技术人员
- 虚拟串口实现
- 3秒钟后自动转到首页
- Enable/disable nfs
- IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期
- 解析分布式分区视图
- Emacs基本知识
- 蟑螂·魂编程思想之《单表无限分类》
- 疯狂的程序员67
- WinCE下的流驱动
- aspnet_wp.exe could not be started_asp.net技巧
- WinCVS客户端的输出信息的含义(转载于teamlet的文章)
- js定时跳转页面的方法
- 创建分布式分区视图