为了使得朋友们对分布式分区视图有个概念,也为了方便后面的内容展开,我们先看看下面一个图:

 
 

讲述分布式分区视图之前,很有必要将之与我们常常熟悉的分区表和索引进行区别。

首先,分布式分区视图是一个横向扩展的方案(Scale out),而分区表却是一个纵向扩展的方案(Scale up)。通过使用分布式分区视图,我们可以把数据放在多个数据库实例(或者服务器)上面;使用分区表,我们可以把数据库中的数据放在同一服务器上的不同的物理文件上。分区表中的分区都在同一个数据库中,而且里面的分区不能跨数据库或者跨服务器。

分区表被分区分割成多个文件组,而这些文件组可以存在于同一个物理磁盘,或者在不同的磁盘上面。另外,分区表中的索引也可以根据分区进行分布。当查询优化器评估一个数据请求,而且这个请求中涉及到使用分区表,那么优化器可以优化这个请求只去合适的分区上面寻找合适的数据。(更多有关分区表的知识,大家可以参考我们站点发布的“深入浅出分区表”系列文章

虽然说,我们本篇讲述分布式分区视图,其实在SQL Server 2005(以及后续版本),也是支持“本地分区视图”,这里是一个相对的概念。因为在SQL Server2005以后已经有了分区表的引入,所以,很多时候,“本地分区视图”仅仅只是用来与之前的数据库版本兼容。现在我们直接采用分区表来替代“本地分区视图”。

当我们用分区的时候,主要有两个目的:

1.把历史的当前数据分开

2.用它来把数据划分为不同范围,如把某个大型的Customer表中的数据按照用户名字的字母顺序分开,如A-F,G-N,O-Z,分为三个区。

其实当我们在横向扩展方案中拆分数据的时候,也会进行一些类似分区的操作,但是,使用分区的时候,情况就没有在一个数据库上面使用分区划分数据那么的简单了,因为数据此时已经拆分到了不同的数据库实例中,甚至不同的服务器上面,,此时,我们就要考虑一些分布式情况,如下:

到现在为止,也说了一些分布式分区视图的一些概念,朋友可能已经有些迫不及待的要知道如何实现,那么,我这里先缓缓。我们先来看几个与它相关的重要的内容。

假设,现在分布式的视图已经建立好了,我们下一步要做的就是如何使用它。

下面,我们就谈谈实现分布式视图的实现的原理和分布式查询相关的知识。

分布式分区视图工作原理

分布式查询和分布式分区视图中使用了OLE DB提供程序来实现数据库实例之间间信息沟通。

访问远程数据库中的数据采用的是Linked Server技术(链接服务器)。一个链接服务器其实就是位于数据库实例中的一个对象。查询引擎是建立在OLE DB之上的,所以,不管是从当前本地的数据库存储引擎中检索数据,还是从远程的数据库的存储引擎中检索数据,他们的机制都是一样的。如果大家对数据库的内部结构稍微知道一点,就非常容易理解这个问题:

朋友们看到上面的图,查询引擎(也称之为“关系引擎”)通过存储引擎提供的OLE DB接口访问达到访问方法。在这里,OLE DB提供程序就可以访问远程的存储引擎的反问方法。

SQL Server横向扩展:设计,实现与维护(2)- 分布式分区视图的更多相关文章

  1. SQL索引管理器 - 用于SQL Server和Azure上的索引维护的免费GUI工具

    我作为SQL Server DBA工作了8年多,管理和优化服务器的性能.在我的空闲时间,我想为宇宙和我的同事做一些有用的事情.这就是我们最终为SQL Server和Azure 提供免费索引维护工具的方 ...

  2. 通过SQL Server的扩展事件来跟踪SQL语句在运行时,时间都消耗到哪儿了?

    原文:通过SQL Server的扩展事件来跟踪SQL语句在运行时,时间都消耗到哪儿了? 问题就是,一个很简单的语句,在不同的服务器上执行,所需要的时间相差很大,特别提到在性能差的服务器上反而快,在性能 ...

  3. SQL Server 2005/2008/2012中应用分布式分区视图

    自2000版本起,SQL Server企业版中引入分布式分区视图,允许你为分布在不同的SQL 实例的两个或多个水平分区表创建视图. 简要步骤如下:根据Check约束中定义的一组值把大表分割成更小的一些 ...

  4. SQL SERVER 判断是否存在数据库、表、列、视图

    SQL SERVER 判断是否存在数据库.表.列.视图 --1. 判断数据库是否存在 IF EXISTS (SELECT * FROM SYS.DATABASES WHERE NAME = '数据库名 ...

  5. SQL Server分区表,能否按照多个列作为分区函数的分区依据(转载)

    问: Hi, I have a table workcachedetail with 40 million rows which has 8 columns.We decided to partiti ...

  6. Microsoft SQL Server 管理 (常用管理及维护命令)

    --查询当前连接的实例名 select @@servername --察看任何数据库属性 sp_helpdb master --设置单用户模式,同时立即断开所有用户 alter database No ...

  7. SQL Server 禁用扩展存储过程

    概述 扩展存储过程是 SQL Server 实例可以动态加载和运行的 DLL.扩展存储过程是使用 SQL Server 扩展存储过程 API 编写的,可直接在 SQL Server 实例的地址空间中运 ...

  8. sql server 主从库设计和数据库镜像设计

    sql server 主从设计可以通过sql server 的发布订阅实现,在大数据量的时候不要用快照发布,要使用事务发布的方式实现. 主从的设计后,要将数据库的读写分离,实现数据库效率的提示 而数据 ...

  9. SQL Server datetime数据类型设计、优化误区

    一.场景 在SQL Server 2005中,有一个表TestDatetime,其中Dates这个字段的数据类型是datetime,如果你看到表的记录如下图所示,你最先想到的是什么呢? (图1:数据列 ...

随机推荐

  1. zk中文乱码问题

    之前讲了怎么把数据导入到zookeeper(见zookeeper事件监听的importData方法),虽然本机win10的zookeeper展示没问题,但到了linux上就出现乱码了: << ...

  2. Android 从上层到底层-----kernel层

    CPU:RK3288 系统:Android 5.1 功能:上层 app 控制 led 亮灭 开发板:Firefly RK3288 1.在dts文件中增加 led 设备 path:kernel/arch ...

  3. sql语句查询重复数据

    select id, name, memofrom Awhere id in (select id from A group by id having count(1) >= 2)

  4. Unit04: JavaScript 概述 、 JavaScript 基础语法 、 流程控制

    Unit04: JavaScript 概述 . JavaScript 基础语法 . 流程控制 my.js function f3() { alert("唐胜伟"); } demo1 ...

  5. Js中常用的字符串,数组,函数扩展

    由于最近辞职在家,自己的时间相对多一点.所以就根据prototytpeJS的API,结合自己正在看的司徒大神的<javascript框架设计>,整理了下Js中常用一些字符串,数组,函数扩展 ...

  6. Win10系统WMIProviderHost进程占用CPU过高

    “WMI Provider Host“占用了过多CPU资源导致系统卡顿,该如何解决这个问题呢? 解决方法: 可以尝试关闭Windows防火墙服务来解决这个问题. 1.按住win+R,输入service ...

  7. DP 过河卒

    棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. 棋盘用坐标 ...

  8. Range(转)

    原文链接:http://www.cnblogs.com/peida/p/Guava_Range.html 在Guava中新增了一个新的类型Range,从名字就可以了解到,这个是和区间有关的数据结构.从 ...

  9. AngularJS.js: 杂项

    ylbtech-AngularJS.js: 杂项 AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多 ...

  10. 设置VS以管理员身份运行

    以vs2013为例 vs右键属性 ----- ​ 找到目标位置如下 "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\ ...