这时,就需要2台及以上SQL Server服务器(当然,实际的架构中,不仅仅是SQL Server服务器之间集群,还有可能是SQL Server服务器,Oracle服务器、MySQL服务器之间跨服务器、跨域的集群),通过多台SQL Server服务器集群,
形成一个庞大的中央服务器,来处理高并发,大数据量、访问速度等性能问题,常见的是一个例子就是读写分离,主从同步。
下图是在四个IP不同的服务器上分别部署一台SQL Server服务器引擎和每台服务器的SQL Server引擎包括的基本内容。
(一)SQL Server 引擎基本内容
1.数据库
2.安全性
3.服务器对象
4.复制
5.AlwaysON
6.管理
7.Integration Services
(二)SQL Server引擎之间关系
1.跨域
2.跨域数据主从同步
二 SQL Server 数据文件存储
在了解SQL Server服务器基本构成,SQL Server服务器部署,SQL Server服务器集群和客户端访问工具SSMS如何访问SQL Server服务器后,接下来,我们将目标定位在单个SQL Server服务器上,研究
SQL Server单个服务器,通过第一部分,我们知道单个SQL Server服务器的基本组成,接下来,我们来分析SQL Server服务器都有哪些文件,且它们分别以什么样的形式存储,存储在哪?
对于SQL Server,数据库文件和日志文件是其两大类核心文件。
数据文件主要用来存储相关数据的,如系统数据库(master,model,msdb,tempdb)文件,用户自定义数据库文件,日志文件等。
1.数据库文件主要包括两个核心文件(.mdf-文件为主要文件,.ndf-文件为次要文件),当创建数据库时,系统默认会创建.mdf文件和.ndf文件,这两个文件是以页(page)的
方式存储的,它们用来保存一些数据库对象,如保存表数据,索引数据,约束等;
2.日志文件(Virtual Log Files,简称VLF),这种文件不是按照页的方式存储的,换句说,他们存储的大小是不确定的,是任意的。
三 Table表数据的存储形式
通过第二部分,我们知道了SQL Server服务器主要有两大类资源文件,即数据库文件和日志文件,其中,对于用户或者一般开发人员来说,数据库文件应该算是他们最关心的文件,
然而,数据库文件有很多资源对象,如实体表(table),视图(View),索引(Index),约束(Constraint)等等,面对这么多数据库对象,我们该如何研究呢?是全部研究,还是选择重点研究?当然是选择重点研究,
我们将选择用户或开发人员使用频率最多的实体表(table)作为研究对象。
本小节,我们主要讨论几个问题:table是如何存储的,什么是分区,什么是堆,什么是B-树,以及它们之间的关系是怎样的?
(一)实体表的两种存储方式
对于SQL Server中的实体表数据,在SQL Server中的存储形式表现为堆存储(Heap)和B树存储(B-Tree,B+Tree)。
(二)Heap
1.堆,指不含有聚集索引的表,之所以称为堆,是因为它的数据不按任何顺序进行组织,而是按分区组对数据进行组织。
2.在堆中,用于保存数据之间关系的唯一索引结构是索引分配映射(IAM,Index Allocation Map)的位图,对于混合区(mixed extent)分配的前8个页,这个位图中有指向这些页的指针,
它还包括一个大位图(每个位代表文件中的4G范围内的一个区)。