浅谈SQL Server数据的内部存储 (2)

这时,就需要2台及以上SQL Server服务器(当然,实际的架构中,不仅仅是SQL Server服务器之间集群,还有可能是SQL Server服务器,Oracle服务器、MySQL服务器之间跨服务器、跨域的集群),通过多台SQL Server服务器集群,

形成一个庞大的中央服务器,来处理高并发,大数据量、访问速度等性能问题,常见的是一个例子就是读写分离,主从同步。

浅谈SQL Server数据的内部存储

     下图是在四个IP不同的服务器上分别部署一台SQL Server服务器引擎和每台服务器的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,数据库文件和日志文件是其两大类核心文件。

浅谈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中的实体表数据,在SQL Server中的存储形式表现为堆存储(Heap)和B树存储(B-Tree,B+Tree)。

     

浅谈SQL Server数据的内部存储

  (二)Heap

    1.堆,指不含有聚集索引的表,之所以称为堆,是因为它的数据不按任何顺序进行组织,而是按分区组对数据进行组织

    2.在堆中,用于保存数据之间关系的唯一索引结构是索引分配映射(IAM,Index Allocation Map)的位图,对于混合区(mixed extent)分配的前8个页,这个位图中有指向这些页的指针,

它还包括一个大位图(每个位代表文件中的4G范围内的一个区)。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxjzx.html