[转帖]Sql Server - 文件和文件组体系结构

sql,server,文件,体系结构 · 浏览次数 : 0

小编点评

**SQL Server 数据库文件扩展名** * `.mdf`:主数据文件 * `.ndf`:次要数据文件 * `.ldf`:日志文件 **文件位置** * 数据库文件的位置记录在数据库的主文件和`master` 数据库中。 * 主数据文件是数据库的起点,指向其他文件。 * 次要数据文件除主数据文件以外的所有其他文件都是次要数据文件。 **数据库文件类型** * 主数据文件:用于存储数据库的起点。 * 次要数据文件:用于存储数据库中的其他数据。 * 日志文件:包含用于恢复数据库的所有日志信息。 **文件扩展名选择** * 使用扩展名可以帮助识别文件的类型。 * .mdf、.ndf 和 .ldf 文件扩展名有助于 SQL Server 快速识别文件类型。 **默认文件组** * 数据库中只有一个默认文件组,用于包含数据库对象和文件。 * 其他文件组用于将数据库对象和文件分成不同的文件组。

正文

 

摘自 http://msdn.microsoft.com/zh-cn/library/ms179316(SQL.105).aspx

SQL Server 将数据库映射为一组操作系统文件。数据和日志信息绝不会混合在同一个文件中,而且一个文件只由一个数据库使用。文件组是命名的文件集合,用于帮助数据布局和管理任务,例如备份和还原操作。

SQL Server 数据库具有三种类型的文件:

  • 主数据文件

    主数据文件是数据库的起点,指向数据库中的其他文件。每个数据库都有一个主数据文件。主数据文件的推荐文件扩展名是 .mdf。

  • 次要数据文件

    除主数据文件以外的所有其他数据文件都是次要数据文件。某些数据库可能不含有任何次要数据文件,而有些数据库则含有多个次要数据文件。次要数据文件的推荐文件扩展名是 .ndf。

  • 日志文件

    日志文件包含着用于恢复数据库的所有日志信息。每个数据库必须至少有一个日志文件,当然也可以有多个。日志文件的推荐文件扩展名是 .ldf。

SQL Server 不强制使用 .mdf、.ndf 和 .ldf 文件扩展名,但使用它们有助于标识文件的各种类型和用途。

在 SQL Server 中,数据库中所有文件的位置都记录在数据库的主文件和 master 数据库中。大多数情况下,SQL Server 数据库引擎使用 master 数据库中的文件位置信息。但是,在下列情况下,数据库引擎使用主文件的文件位置信息初始化 master 数据库中的文件位置项:

  • 使用带有 FOR ATTACH 或 FOR ATTACH_REBUILD_LOG 选项的 CREATE DATABASE 语句来附加数据库时。

  • 从 SQL Server 2000 版或 7.0 版升级时。

  • 还原 master 数据库时。

逻辑和物理文件名称

SQL Server 文件有两个名称:

logical_file_name

logical_file_name 是在所有 Transact-SQL 语句中引用物理文件时所使用的名称。逻辑文件名必须符合 SQL Server 标识符规则,而且在数据库中的逻辑文件名中必须是唯一的。

os_file_name

os_file_name 是包括目录路径的物理文件名。它必须符合操作系统文件命名规则。

SQL Server 数据和日志文件可以保存在 FAT 或 NTFS 文件系统中。由于 NTFS 在安全方面具有优势,因此,我们建议您使用 NTFS 文件系统。可读/写数据文件组和日志文件不能保存在 NTFS 压缩文件系统中。只有只读数据库和只读次要文件组可以保存在 NTFS 压缩文件系统中。有关详细信息,请参阅只读文件组和压缩

如果多个 SQL Server 实例在一台计算机上运行,则每个实例都会接收到不同的默认目录来保存在该实例中创建的数据库文件。有关详细信息,请参阅 SQL Server 的默认实例和命名实例的文件位置

数据文件页

SQL Server 数据文件中的页按顺序编号,文件的首页以 0 开始。数据库中的每个文件都有一个唯一的文件 ID 号。若要唯一标识数据库中的页,需要同时使用文件 ID 和页码。下例显示了包含 4-MB 主数据文件和 1-MB 次要数据文件的数据库中的页码。

两个数据文件中的顺序页码

每个文件的第一页是一个包含有关文件属性信息的文件的页首页。在文件开始处的其他几页也包含系统信息(例如分配映射)。有一个存储在主数据文件和第一个日志文件中的系统页是包含数据库属性信息的数据库引导页。有关页和页类型的详细信息,请参阅页和区

文件大小

SQL Server 文件可以从它们最初指定的大小开始自动增长。在定义文件时,您可以指定一个特定的增量。每次填充文件时,其大小均按此增量来增长。如果文件组中有多个文件,则它们在所有文件被填满之前不会自动增长。填满后,这些文件会循环增长。

每个文件还可以指定一个最大大小。如果没有指定最大大小,文件可以一直增长到用完磁盘上的所有可用空间。如果 SQL Server 作为数据库嵌入某应用程序,而该应用程序的用户无法迅速与系统管理员联系,则此功能就特别有用。用户可以使文件根据需要自动增长,以减轻监视数据库中的可用空间和手动分配额外空间的管理负担。

数据库文件组

为便于分配和管理,可以将数据库对象和文件一起分成文件组。有两种类型的文件组:

主文件组

主文件组包含主数据文件和任何没有明确分配给其他文件组的其他文件。系统表的所有页均分配在主文件组中。

用户定义文件组

用户定义文件组是通过在 CREATE DATABASE 或 ALTER DATABASE 语句中使用 FILEGROUP 关键字指定的任何文件组。

日志文件不包括在文件组内。日志空间与数据空间分开管理。

一个文件不可以是多个文件组的成员。表、索引和大型对象数据可以与指定的文件组相关联。在这种情况下,它们的所有页将被分配到该文件组,或者对表和索引进行分区。已分区表和索引的数据被分割为单元,每个单元可以放置在数据库中的单独文件组中。有关已分区表和索引的详细信息,请参阅已分区表和已分区索引

每个数据库中均有一个文件组被指定为默认文件组。如果创建表或索引时未指定文件组,则将假定所有页都从默认文件组分配。一次只能有一个文件组作为默认文件组。db_owner 固定数据库角色成员可以将默认文件组从一个文件组切换到另一个。如果没有指定默认文件组,则将主文件组作为默认文件组。

与[转帖]Sql Server - 文件和文件组体系结构相似的内容:

[转帖]Sql Server - 文件和文件组体系结构

摘自 http://msdn.microsoft.com/zh-cn/library/ms179316(SQL.105).aspx SQL Server 将数据库映射为一组操作系统文件。数据和日志信息绝不会混合在同一个文件中,而且一个文件只由一个数据库使用。文件组是命名的文件集合,用于帮助数据布局和

[转帖]SQL Server数据库存储总结

SQL Server数据库存储文件类型:数据文件和日志文件。数据文件以页面作为存储单元存储数据。 页面:即数据页面,数据页(Page)。是系统在磁盘间中分配的一段大小为8k的连续空间。 文件头(File Header):每个文件的第0页记录叫文件头,记录引导信息。 扩展:每8个数据页(64k)的组合

[转帖]SQL Server 聚集索引和 非聚集索引 说明

https://www.cndba.cn/dave/article/4506 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。 索引包含由表或视图中的一列或多列生成的键。 这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行。 1 聚集索引

[转帖]SQL Server 不同版本之间的 区别说明

2021-05-12 23:5062070原创SQLServer 本文链接:https://www.cndba.cn/dave/article/4527 SQL Server 数据库版本也是在不断的进行迭代。目前主流存在的版本有:SQL Server 2008、2012、2014、2016、2017

[转帖]SQL Server 体系结构中的2个主要引擎 说明

2020-03-18 16:2321450原创SQLServer 本文链接:https://www.cndba.cn/dave/article/4498 SQL Server 由两个主要引擎组成∶关系引擎(relational engine)和存储引擎(storage engine)。 1 关系引擎

[转帖]SQL Server 内部数据库版本 及兼容表

2022-04-20 09:043100转载SQLServer Microsoft SQL Server 的较新版本创建的数据库无法附加或还原到较早的版本。之所以存在此限制,是因为较旧的版本不知道新版本中引入的文件格式有哪些变更。 如果你尝试将数据库附加到早期版本、或者还原到早期版本,将会收到 SQ

[转帖]Sql Server中通过sql命令获取cpu占用及产生锁的sql

https://www.jb51.net/article/266255.htm 这篇文章主要介绍了Sql Server中通过sql命令获取cpu占用及产生锁的sql,需要的朋友可以参考下 获取SQLSERVER中产生锁的SQL语句 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1

[转帖]sql server 2016不能全部用到CPU的逻辑核心数的问题

https://blog.csdn.net/u011966339/article/details/122969685 最近在工作中遇到了,sql server 2016 不能把CPU 的核心全部用到的问题.通过分析工具看到 总共CPU核心有72核,但sql 只能用到40核心,想信也有很多人遇到这问题

[转帖]SQL Server各版本序列号/激活码/License/秘钥

https://www.cnblogs.com/cqpanda/p/16184853.html SQL Server 2019# Enterprise:HMWJ3-KY3J2-NMVD7-KG4JR-X2G8GEnterprise Core:2C9JR-K3RNG-QD4M4-JQ2HR-8468J

[转帖]SQL Server 2022 正式发布,支持 Azure 最多的 SQL Server 版本!

https://www.modb.pro/db/559467 SQLSERVER 最新版 2022年11月16日,我们宣布正式发布 SQL Server 2022,这是迄今为止支持 Azure 最多的 SQL Server 版本,并在性能、安全性和可用性方面不断创新。这标志着 SQL Server