破人

导航

如何利用SQL Server 2005分布式分区视图分解数据表

摘自http://www.builder.com.cn/2007/0406/385488.shtml

 

列表D的脚本在每台服务器上创建SalesHistory表,并给每个表加载数据。我们为每个表中的SaleID字段创建一个“检查”约束,这个约束用来确保只有确定的SaleID值才能进入SalesHistroy表中。

这个字段将作为我们的分区主键,当我们查询分布式分区视图时,它可以使得查询优化器来决定是从本地表还是远程表中获得数据。

现在需要赋予读者SQL登录的权限,来对SalesHistoty表中的元数据进行插入、更新、删除和浏览等操作。在每台服务器上执行列表E中的脚本即可。

列表F中的脚本在每台服务器上创建分布式分区视图。需要注意的是在服务器A上创建的视图通过查询本地SalesHistory表,然后将结果集聚集到服务器B上的SalesHistoty表中。

优点

使得查询优化器可以很容易的知道使用哪个服务器来查询,在分布式环境中利用分区主键可以大大提高性能。你可以通过查看当你依靠该视图运行查询时的执行计划表来检验一下。

对于需要从远程服务器返回记录的查询,它会返回所有记录,但是当仅用本地数据就可以满足查询时,就根本不需要查询远程服务器。

当你需要插入、更新或删除数据时,又有什么帮助呢?实际上,它以同样的方式给我们提供便利,因为分区键是数据表的主键(至少它总是主键的一部分)。

SQL Server总是知道该在何处插入新记录并且在本地或远程执行相应的动作。这同样适用于更新和删除,SQL Server使用分区键来更新和删除数据,这也是为什么我将本文前面定义的权限赋予用户的原因。

这样,用户就可以在需要的时候对SalesHistory表进行读写。因为该视图存在于每个服务器上,我只要在应用层就可以执行视图上的操作,所以应用层不用知道潜在数据表的结构,只需要关心更新视图就可以。

posted on 2010-01-25 09:14  破人  阅读(499)  评论(0编辑  收藏  举报