4.2.4 SQL Server数据库文件

4.2.4 SQL Server数据库文件
SQL Server将数据存储在数据文件中,将事务记录存储在事务□志文件中。如果通过 一个逻辑数据库名称将它们集合到一起,这些文件就是数据库。SQL Server数据库可以具 有多个数据文件和多个事务日志文件(虽然-个事务日志文件通常已经足够)。
当首次创建数据库时,它会有一个默认文件扩展名为.mdf的主数据文件。数据库也可 以有默认扩展名为m df的辅助数据文件。这些数据文件可以组合到一个称为文件组的逻辑 组中,第 5 章将对此进行介绍。该数据库至少有一个默认扩展文件名为.ldf的事务日志文 件。SQL Server数据库的文件扩展名并不是强制的,因此可以使用任何扩展名,但我们通 常使用默认的扩展名,因为默认扩展名可以很容易地显示出文件的用途。下列几节只描述
数据文件和事务日志文件的物理存储结构。要全面了解数据库的创建过程及如何创建和使
用文件,可参阅第5 章。

4 .2 .5 数据文件
数据库的主数据文件(.mdf)以及任何辅助数据文件(.ndf)有着相同的结构。这两种文件 用来存储数据,以及可让SQL Server有效地査找、读取、修改和添加数据到数据库的元数 据。来自表和索引的所有数据以及描述数据的元数据都组织在称为区和页的存储对象中。
1.区
区 是 SQL Server的一种文件存储结构,大小 为 64KB。区 由 8 个连续的8KB页构成。 区分为两种:混合区和统一区。混合区包含来自多个对象的页。例如,混合区可能包含来
自表A 的数据页、来 自 表 B 的索引页,还有更多来自表C 的数据贞。因为一个区中有8
个页,所 以 8 个不同的对象可以共享一个区。统一区包含8 个属于同一对象的连续页。它
们的差异如图4-1所示。
当在数据库操作期间检索数据或将数据写入磁盘时,区是数据检索的基本结构。SQL
Server总是以64KB的增量分配空间。这很好地对应了数据在内存和在NT文件系统(NTFS) 格式分区中的组织方式。但是,如前所述,SQL Server可在单个区中存储来自不同对象的 页,从而最大化存储效率。

2.页
SQL Servei* 2008数据库的所有数据和元数据都存储在页中。和区不一样,页总是存储 来自同一对象的数据。这包括来自表的行、来自索引的行以及大型对象数据。页的大小为
8KB,并且组织在64KB的区(由8 个连续的8KB页组成)中。每个页有一个96字节的标头,
它含有页的信息,例如页码、存储在页上的数据类型,页上的可用空间,以及拥有该页的
对象。SQL Server包含了一些用来存储和管理数据的不同类型的页。
数据页
数据页包含来自表的数据行。这些行不能跨页。由于有页标头和行偏移量信息,最大
的行大小被限制为8060字节。行大小由行中的列数和定义于每列上的数据类型所决定。为
了最大限度地提髙性能,表和索引行应尽可能窄些。例如,如果一个表行的宽度是4 100
字节,那每个数据页上只能存储一行,留下了近4000字节的不可用空间。从这样一种结构
的表中读取结果的话,仅检索4100字节的数据就要求读取8KB数据。效率显然太低。物
理数据页结构如图4-2所示。

对于页上的每行,每个行偏移量块都占用2 个字节的空间。为了优化存储空间,表中
的行在物理上的排列不同于它们的逻辑定义。当一行存放在数据页上时,它是用一个4 字
节的标头(它可唯一标识页中的行)来标识的。标头后面为定长数据列、一个NULL块、一
个变长块,以及物理行末尾的所有变长数据列,如图4-3所示

NULL块包含一个2 字节的块,指明行中有多少列可包含NULL;后跟一个表明可空
列是否为空的位图。NULL位图的大小为每列1位,舍入至最接近的字节数。1? 8 个可空
列需要一个1字节的位图。9? 16个列需要一个2 字节的位图,依此类推。
和 NULL块一样,变长块包含一个2 字节的块,指明可以有多少变长列;后跟一个表
明每个变长列的最大长度的位 图 。不同于NULL块的是,变长块位图的大小为每列2 个字
节,指向每个变长列的末尾,这样所有变长数据都可连续地存储在数据行的末尾。如果没
有列被定义为变长列,则变长块将被将略.
索引页
索引页包含来自索引的行。它们和数据页有着相同的结构及限制。
文本/图像页
当使用大型对象数据类型定义列时,SQL Server会在实际的数据行中放置一个16字节 的指针,并将大型对象数据放在单独的数据页上。这类数据包括被定义为text、ntext、image、
varchar(MAX)、nvarchar (MAX)和 varbinary (MAX)和 XML 的数据o
全局分配映射表(GAM)和辅助全局分配映射表(SGAM)页
GAM和 SGAM页是基于每个文件管理区的分配页。每个数据文件的第2 页是GAM
页,而第3 页是SGAM页。SQL Server会在必要时添加额外的GAM和 SGAM页,因为 每个GAM和 SGAM页只能跟踪63 904个区。GAM和 SGAM页构成了一个表明区是统一
区的还是混合区的位图。GAM和 SGAM位图也会指出区是满的、空的,或是还有可用数
据页。
页可用空间(PFS)页
PFS页记录每一页的状态、页是否已被分配,以及每页上的可用空间。
索引分配映射(IAM)页
IAM页包含表或者索引使用的区的信息。它包含一个对象的8 个初始页的位置信息,
以及一个表示用于该对象的区的位图。每 个 IAM 页最多可跟踪512 000个数据页。SQL
Server利用IAM和 PFS页来为数据查找和分配新页。
大容量更改映射表(BCM)页
BCM页包含自上一次事务日志备份以来被人容量操作修改的区的位置。大容量操作包

原文地址:https://www.cnblogs.com/zhouwansheng/p/9276990.html

时间: 2024-08-28 07:41:46

4.2.4 SQL Server数据库文件的相关文章

C# 以附加文件方式连接SQL Server数据库文件

string str = @"data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFileName=z:\ttt.mdf;User Instance=true"; 其中User Instance=true参数不可少. //http://www.cnblogs.com/yuanyuan/archive/2011/02/12/1951871.html Integrated   Security默认值是False,此时需要提供U

人人都是 DBA(V)SQL Server 数据库文件

SQL Server 数据库安装后会包含 4 个默认系统数据库:master, model, msdb, tempdb. SELECT [name] ,database_id ,suser_sname(owner_sid) AS [owner] ,create_date ,user_access_desc ,state_desc FROM sys.databases WHERE database_id <= 4; master master 数据库包含用于记录整个服务器安装信息和后续创建的所有数

SQL SERVER数据库文件删除、分区格式化解决方案

[故障类型]数据库文件删除.分区格式化.文件大小变为"0",或使用备份还原数据库时覆,盖数据库? [典型特征]◎ 数据库文件(MDF.NDF或LDF)丢失"置疑"状态:◎ 数据库数据恢复至早期数据: ◆ 检测流程a. 通过文件系统对丢失的数据库文件进行分析:b. 针对MDF(或NDF)文件内部结构,对硬盘进行全面分析. ◆ 恢复流程a. 将故障硬盘接入安全的数据恢复平台中,对硬盘做完整的全盘镜像,以防二次破坏:b. 分析原来的文件系统格式:c. 查找文件目录索引及文

SQL Server 数据库文件 4 点注意

1.数据库被分解成逻辑页面,每页8K,在每一个文件中页面从 0 --> x 连续编号: 2.可以通过 [database_id]   [file_id]   [page_id] 的形式引用页面: 3.alter database 扩大文件时会在文件结尾处添加新空间,也就是说新分配空间的首页,就是第x+1页: 4.dbacc shrinkdatabase / shrinkfile 时会从编号最高的页开始删除页面:

查看sql server数据库文件信息

--drop table #dbfiles --deallocate cursor1 ------ declare cursor1 cursor for SELECT name from sys.databases where state=0 -- 临时表 www.2cto.com CREATE TABLE #dbfiles ( dbname nvarchar(100), filetype nvarchar(100), filename nvarchar(200) ) declare @name

SQL Server数据库文件. mdf和.mds的导出

1.打开你的管理器-->选择你的数据库-->选择所有任务-- >分离数据库-->之后拷贝一分给别人用就可以了,之后你在附加上你的数据库. 2.拷贝  拷贝数据库的位置:可以通过点击服务器-->右击-->附加-->添加上面查看数据库所在的位置 知道数据库所在的位置后进行拷贝 3.数据库拷贝之后再通过第二步附加上数据库.这样数据库可以再次使用. 数据库也可以通过第二步附加到别的服务器的数据库上,以方便连接重新部署网站或者软件.

SQL Server数据库概述

SQL Server是一个数据库管理系统,主要是通过Windows服务来运行的.本篇主要介绍如何对数据库进行基本操作与管理 启动或停止数据库服务 在完成数据库安装之后,需要手动检查是否安装成功,是否正在运行,并根据实际情况配置为手动或自动启动.可以根据以下三种方式启动或停止数据库服务: (1)使用服务器管理器 (2)使用SQL Server配置管理器 (3)使用SSMS 系统数据库 SQL Server中的数据库按照用途可以分为以下两种: 系统数据库:管理和维护SQL Server所必须的数据库

SQL Server数据库

SQL Server是一个数据库管理系统,主要是通过Windows服务来运行的.本篇主要介绍如何对数据库进行基本操作与管理 启动或停止数据库服务 在完成数据库安装之后,需要手动检查是否安装成功,是否正在运行,并根据实际情况配置为手动或自动启动.可以根据以下三种方式启动或停止数据库服务: (1)使用服务器管理器 (2)使用SQL Server配置管理器 (3)使用SSMS 系统数据库 SQL Server中的数据库按照用途可以分为以下两种: 系统数据库:管理和维护SQL Server所必须的数据库

将txt文件内容导入sql server 数据库表中

将类似这样的txt文件,如何导入到sql server 数据库表中呢? 第一步,在开始菜单中 找到 sql server 的导入和导出数据 然后,在数据源 的下拉框中 选择 平面文件源 基本都是点击 下一步 选择好要导入数据的数据库 与表: 编辑映射 : 点击下一步 执行 然后 完成 查看数据库 表 数据已经导入 成功