数据如何存储在SQL Server中?

Ano*_*op 24 sql sql-server-2008

数据如何存储在SQL Server中?

Eri*_*bal 23

这篇维基百科的文章很好地描述了它.

以下是与数据存储相关的子集:

数据存储数据存储的主要单元是数据库,它是具有类型列的表的集合.SQL Server支持不同的数据类型,包括主要类型,如Integer,Float,Decimal,Char(包括字符串),Varchar(可变长度字符串),二进制(用于非结构化数据blob),Text(用于文本数据)等.它还允许定义和使用用户定义的复合类型(UDT).SQL Server还使服务器统计信息可用作虚拟表和视图(称为动态管理视图或DMV).除了表以及事务日志之外,数据库还可以包含其他对象,包括视图,存储过程,索引和约束.SQL Server数据库最多可包含231个对象,并且可以跨越多个操作系统级别的文件,最大文件大小为220 TB.数据库中的数据存储在扩展名为.mdf的主数据文件中.使用.ndf扩展名标识的辅助数据文件用于存储可选元数据.日志文件使用.ldf扩展名标识.

分配给数据库的存储空间分为按顺序编号的页面,每个页面大小为8 KB.页面是SQL Server操作的I/O的基本单位.页面标有96字节的标题,该标题存储有关页面的元数据,包括页面编号,页面类型,页面上的可用空间以及拥有它的对象的ID.页面类型定义页面中包含的数据 - 存储在数据库中的数据,索引,分配映射,其中包含有关如何将页面分配给表和索引的信息,更改映射,其中包含自上次备份或记录以来对其他页面所做更改的信息,或包含大型数据类型,如图像或文本.虽然页面是I/O操作的基本单元,但实际上空间的管理范围包括8页.数据库对象可以跨越范围中的所有8个页面("统一范围"),也可以与最多7个对象共享一个范围("混合范围").数据库表中的行不能跨越多个页面,因此大小限制为8 KB.但是,如果数据超过8 KB且该行包含Varchar或Varbinary数据,则这些列中的数据将移动到新页面(或可能是一系列页面,称为"分配"单元),并替换为指向数据的指针.

对于表的物理存储,其行被分成一系列分区(编号为1到n).分区大小是用户定义的; 默认情况下,所有行都在一个分区中.将表拆分为多个分区,以便在群集上分布数据库.每个分区中的行存储在B树或堆结构中.如果表具有允许快速检索行的关联索引,则行根据其索引值按顺序存储,其中B树提供索引.数据在叶子的叶子节点中,并且其他节点存储从各个节点可到达的叶子数据的索引值.如果索引是非群集的,则不会根据索引键对行进行排序.索引视图与索引表具有相同的存储结构.没有索引的表存储在无序堆结构中.堆和B树都可以跨越多个分配单元.


Gar*_*ett 10

SQL Server数据存储在数据文件中,默认情况下,该文件具有.MDF扩展名.日志(.LDF)文件是SQL Server用于记录针对SQL Server实例执行的事务的顺序文件(稍后将详细介绍实例).使用SIMPLE恢复模型时,日志文件(.LDF文件)会自动截断,但在使用BULK LOGGED或FULL恢复时则不会自动截断.

实例允许在一台计算机上安装多个SQL Server.如果实例是无名的,则它是默认实例.命名实例也是可能的.例如:

MACHINENAME < - 默认实例只是机器名称MACHINENAME\Test < - 这是此机器上的"Test"实例

您可以使用SQL Server Management Studio(从SQL Server 2005开始)或Enterprise Manager(SQL Server 2000及更早版本)等工具与实例和实例下的数据库进行交互.

所有实例(从SQL Server 2005开始)都将具有隐藏的资源数据库,以及master,model,msdb和temp数据库.这些数据库是"系统"数据库.

不确定你还在寻找什么.希望有所帮助.

编辑:哦,是的,物理上,"数据文件"中的数据(默认情况下为.MDF文件)在SQL Server中称为"页面".日志文件(.LDF文件)中的数据按顺序存储.在企业中,数据和日志文件有时会分割在不同的物理硬盘驱动器上,以实现更好的磁盘I/O. 或硬件RAID用于此目的.

EDIT2:忘了提到文件组.使用文件组,您可以设计逻辑数据库模式,使该模式的元素在物理上分离,通常用于跨不同的硬盘驱动器分配物理数据库.例如,您可以拥有数据文件组,索引文件组和图像文件组(对于二进制图像).


one*_*hen 7

我推荐"Microsoft SQL Server 2008 Internals"这本书 - 实际上Kalen Delaney在内部的任何内容都很好,IMO.

  • +1>优秀的书籍,内部解释比网络论坛上的几百个字符要好得多. (2认同)

Ser*_*pth -3

什么是关系型数据库管理系统?

\n\n

RDBMS 代表关系数据库管理系统。RDBMS 数据由数据库表、字段和记录构成。每个 RDBMS 表都由数据库表行组成。每个数据库表行由一个或多个数据库表字段组成。

\n\n

RDBMS 将数据存储到表的集合中,这些表可能通过公共字段(数据库表列)相关。RDBMS 还提供关系运算符来操作存储到数据库表中的数据。大多数 RDBMS 使用 SQL 作为数据库查询语言。

\n\n

Edgar Codd 介绍了关系数据库模型。许多现代 DBMS 不符合 RDBMS 的 Codd\xe2\x80\x99s 定义,但尽管如此,它们仍然被视为 RDBMS。

\n\n

最流行的 RDBMS 是 MS SQL Server、DB2、Oracle 和 MySQL。\n来源

\n