【问题标题】:How is data stored in SQL server? [closed]数据如何存储在 SQL Server 中? [关闭]
【发布时间】:2010-10-26 06:43:13
【问题描述】:

数据在 SQL Server 中是如何存储的?

【问题讨论】:

  • 请澄清一下,您到底在寻找什么?
  • 我正在寻找存储机制.....数据输入到 sql server 的顺序......例如,如果我们插入 1000 万行,如何像分页一样插入行.. .transaction 日志...文件的...文件组
  • 应编辑 OP 以反映这一点。糟糕的帖子...
  • 我觉得这篇文章不错。这正是我一直在寻找的诚实。并非每篇文章都需要是可以测试的代码。
  • 在 mdf 数据文件中。 > 稍后,extents-segments -in db 块然后 os 块。

标签: sql sql-server-2008


【解决方案1】:

这个维基百科article 描述得很好。

这是它的一个子集,与数据存储有关:

数据存储的主要单元 数据存储是一个数据库,它是一个 带有类型的表的集合 列。 SQL Server 支持不同的 数据类型,包括主要类型 例如整数、浮点数、小数、字符 (包括字符串),Varchar (可变长度字符串), 二进制(对于非结构化的 blob 数据),文本(用于文本数据)之间 其他。它还允许用户自定义 要定义的复合类型 (UDT) 并使用。 SQL Server 也使服务器 可用作虚拟表的统计信息 和视图(称为动态管理 视图或 DMV)。数据库也可以 包含其他对象,包括视图, 存储过程、索引和 约束,除了表, 连同事务日志。一个 SQL 服务器数据库最多可以包含 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 树都可以跨越 多个分配单元。

【讨论】:

    【解决方案2】:

    您可以随心所欲地学习,但对于 SQL Server 2008,Files and Filegroups Architecture - MSDN 是对基本数据库架构的一个很好的概述。

    如果您需要更详细地了解 SQL Server 2008 如何存储数据,MSDN 站点将是一个宝贵的资源。

    【讨论】:

      【解决方案3】:

      我推荐《Microsoft SQL Server 2008 Internals》一书——事实上,Kalen Delaney 的任何关于内部的内容都很好,IMO。

      【讨论】:

      • +1 > 非常棒的书,对内部原理的解释比在网络论坛上几百个字符所做的要好得多。
      【解决方案4】:

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

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

      MACHINENAME

      您可以使用 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 用于此目的。

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

      【讨论】:

      • 刚刚注意到你的“sqlserver2008”标签,所以上面的一些东西可以忽略。 =)
      【解决方案5】:

      SQL Server 是Relational Database Management System:

      关系数据库管理 系统(RDBMS)是一个数据库 管理系统 (DBMS) 关于所介绍的关系模型 由 E.F.科德。最受欢迎的广告 和目前的开源数据库 使用基于关系模型。

      RDBMS 的简短定义可能是 一个 DBMS,其中数据存储在 表格的形式和关系 其中的数据也存储在 表格形式。

      【讨论】:

        【解决方案6】:

        什么是关系型数据库?

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

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

        Edgar Codd 介绍了关系数据库模型。许多现代 DBMS 不符合 Codd 对 RDBMS 的定义,但它们仍然被认为是 RDBMS。

        最流行的 RDBMS 是 MS SQL Server、DB2、Oracle 和 MySQL。 Source

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-08-06
          • 1970-01-01
          • 2014-07-16
          • 2014-04-27
          • 1970-01-01
          • 2019-10-10
          • 1970-01-01
          相关资源
          最近更新 更多