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

 
 

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

首先,分布式分区视图是一个横向扩展的方案(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. Snippet取表字段说明和详细信息

    IF OBJECT_ID (N'dbo.GetDetails', N'IF') IS NOT NULL DROP FUNCTION dbo.GetDetails; GO create function ...

  2. bfs判断子图是否连通

    int judge() { int v[13] = { 0 }; queue<int> myq; myq.push(ans[0]); v[ans[0]] = 1; while (!myq. ...

  3. elasticsearch 5.0 获取 TransportClient 操作客户端java API

    本文转载自:http://blog.csdn.net/likui1314159/article/details/53233881 elasticsearch 5.0 获取 TransportClien ...

  4. 架构-架构风格:RESTful

    ylbtech-架构-架构风格:RESTful 一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层 ...

  5. jredis 客户端 使用

    redis学习及实践3---Jedis.JedisPool.Jedis分布式实例介绍 Java中使用Jedis操作Redis Redis客户端:Jedis

  6. nginx上传文件大小

    采用nginx作反向代理,出现了一个诡异的问题,小文件可以提交,大文件会报500内部错误.这个是什么原因导致的呢? 查wiki可知,上传文件大小相关的有三个配置 client_body_buffer_ ...

  7. 读取web外的配置文件

    一般web项目配置文件都放在classPath下面,读取的时候: 1 import java.io.InputStream; 2 import java.util.Properties; 3 publ ...

  8. Centos 文件查找命令

    find [搜索范围] [搜索条件] #搜索文件 find / -name install.log #避免大范围搜索,会非常耗费系统资源 #find是在系统当中搜索符合条件的文件名.如果需要匹配,使用 ...

  9. ORACLE删除字段(set unused的用法)

    一.问题 现场有一张大数据量的分区表,数据量在10G以上.因某种原因需要删除其中的某些字段.如果直接用 alter table1 drop (column1,column2); 或者alter tab ...

  10. zabbix agent主动模式与proxy模式,实现公网zabbix监控私网客户机

    zabbix agent主动模式,实现公网zabbix监控私网客户机 zabbix_server端当主机数量过多的时候,由Server端去收集数据,Zabbix会出现严重的性能问题,主要表现如下:  ...