|
SQL SERVER逻辑结构与物理结构 一、 逻辑结构 (Logical Structure) 逻辑结构是用户和开发人员与 SQL Server 交互时的视角。它定义了数据的组织、管理和安全边界,而不关心数据在硬盘上的具体物理位置。 逻辑层次从大到小可以划分为: 实例 (Instance) 这是 SQL Server 的最高逻辑层级。一个物理服务器上可以安装多个 SQL Server 实例(例如默认实例和命名实例),它们彼此独立,拥有自己的内存、进程和系统数据库。 数据库 (Database) 数据库是数据的集合。SQL Server 包含系统数据库(如 master, model, msdb, tempdb,用于管理整个系统)和用户数据库(用于存储业务数据)。 文件组 (Filegroup) 这是连接逻辑结构和物理结构的桥梁。文件组是一个逻辑容器,它将一个或多个物理数据文件组合在一起,方便进行数据放置和备份。默认情况下,所有对象都在 PRIMARY 文件组中。 架构 (Schema) 架构是数据库对象的命名空间和安全边界。它可以看作是数据库内部的“文件夹”。通过将不同的对象放在不同的架构中(例如 dbo, sales, hr),可以更精细地控制用户权限。 数据库对象 (Database Objects) 包含我们日常操作的具体元素: 表 (Tables): 逻辑上由行和列组成,用于存储结构化数据。 视图 (Views): 虚拟表,基于SQL 查询结果创建。 索引 (Indexes): 用于加速数据检索的数据结构。 存储过程和函数: 预编译的 T-SQL代码块。 二、 物理结构 (Physical Structure) 物理结构是指 SQL Server 如何将数据真正写入操作系统的文件系统中。它决定了 I/O 性能和存储效率。 1. 物理文件 (DatabaseFiles) 每个 SQL Server 数据库在物理磁盘上至少由两个文件组成: 主数据文件 (Primary Data File, .mdf): 每个数据库只能有一个。它包含数据库的启动信息,并指向数据库中的其他文件。用户数据也可以存储在这里。 次数据文件 (Secondary Data File, .ndf): 可选的。当数据库过大,或者你需要将数据分布到不同的物理磁盘以提高读写性能时,可以创建次数据文件。 事务日志文件 (Transaction Log File, .ldf): 每个数据库至少有一个。它记录了所有修改数据库的事务(如 INSERT、UPDATE、DELETE)。这是数据库恢复、高可用性(如 AlwaysOn)的核心。 2. 存储基本单位 (StorageUnits) 在数据文件内部,SQL Server 采用高度结构化的方式来分配空间: 页 (Page) 大小: 8 KB。 概念: 这是 SQL Server 数据存储的基本单位。磁盘I/O 操作是在页级别执行的。这意味着即使你只读取一行 10 字节的数据,SQL Server 也会把包含这一行的整个 8KB 页加载到内存中。 结构: 每页分为页头(96字节,包含系统信息)、数据行(实际存储的数据)和行偏移数组(记录每行数据在页内的具体位置)。 区 (Extent) 大小: 64 KB(即连续的 8 个页)。 概念: 这是 SQL Server 空间分配的基本单位。为了提高空间分配的效率,SQL Server 不会一页一页地分配空间,而是以“区”为单位。 分类: 分为统一区(UniformExtent,由同一个对象独占,例如一张大表)和混合区(Mixed Extent,最多可由 8 个不同的对象共享,通常用于存放非常小的表)。
|