数据是如何存储在sql server中的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (43)

数据是怎样存储在sql server中的?

提问于
用户回答回答于

SQLServer数据存储在默认情况下具有.mdf扩展名的数据文件中。log(.ldf)文件是SQLServer使用的顺序文件,用于记录针对SQLServer实例执行的事务(稍后将详细介绍实例)。日志文件(.LDF文件)在使用简单恢复模型时会自动截断,而在使用大容量日志记录或完全恢复时则不会自动截断。

实例允许在一台计算机上安装多个SQLServer。如果实例名不详,则为默认实例。命名实例也是可能的。例如:

MACHINENAME<--默认实例只是机器名MACHINENAME\Test<--这是这台机器上的“Test”实例

可以使用SQLServerManagementStudio(SQLServer 2005)或EnterpriseManager(SQLServer 2000及之前)等工具与实例&实例下的数据库进行交互。

所有实例(截至SQLServer 2005)都将具有一个隐藏的资源数据库,以及一个主数据库、模型、msdb和temp数据库。这些数据库是“系统”数据库。

用户回答回答于

这个维基百科文章描述得相当好。

下面是其中的一个子集,与数据存储有关:

数据存储数据存储的主要单元是数据库,它是具有类型化列的表的集合。SQLServer支持不同的数据类型,包括主要类型,如Integer、Float、Decimal、Char(包括字符串)、V古董(可变长度字符串)、二进制(用于非结构化数据块)、文本(用于文本数据)等。它还允许定义和使用用户定义的复合类型(UDT)。SQLServer还将服务器统计信息作为虚拟表和视图(称为动态管理视图或DMV)提供。数据库还可以包含其他对象,包括视图、存储过程、索引和约束,以及表和事务日志。SQLServer数据库最多可以包含231个对象,并且可以跨越多个OS级别的文件,最大文件大小为220 TB。数据库中的数据存储在扩展名为.mdf的主数据文件中。使用.ndf扩展名标识的辅助数据文件用于存储可选元数据。用.ldf扩展名标识日志文件。 分配给数据库的存储空间被划分为按顺序编号的页,每个页的大小为8KB。页面是SQL Server操作的I/O的基本单元。一个页面被标记为一个96字节的标题,它存储关于页面的元数据,包括页码、页面类型、页面上的空闲空间以及拥有它的对象的ID。页类型定义页面中包含的数据--存储在数据库、索引、分配图中的数据,这些数据包含有关如何将页分配给表和索引的信息,更改映射包含自上次备份或日志记录以来对其他页面所做的更改的信息,或者包含大型数据类型,如图像或文本。虽然页面是I/O操作的基本单元,但空间实际上是按照一个由8页组成的范围来管理的。数据库对象可以在一个范围(“统一范围”)中跨越所有8个页面,也可以与多达7个对象共享一个范围(“混合范围”)。数据库表中的行不能跨越一个以上的页,因此限制在8KB的大小。但是,如果数据超过8KB,且行包含Vcher或Var二进制数据,则这些列中的数据将被移动到新页(或可能是称为分配单元的页面序列),并替换为指向数据的指针。 对于表的物理存储,其行被划分为一系列分区(编号为1到n)。分区大小是用户定义的;默认情况下,所有行都位于单个分区中。表被分割成多个分区,以便将数据库分散到集群上。每个分区中的行存储在B树或堆结构中。如果表具有允许快速检索行的关联索引,则行按照其索引值按顺序存储,而B树提供索引。数据位于叶子的叶节点中,其他节点存储可从各个节点访问的叶数据的索引值。如果索引是非聚集的,则行不会根据索引键排序。索引视图具有与索引表相同的存储结构。没有索引的表存储在无序堆结构中。堆和B树都可以跨越多个分配单元。

扫码关注云+社区