• 数据库引擎 页和区体系结构页和区


    页 

    SQL Server 中数据存储的基本单位是页,为数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号)。

    磁盘 I/O 操作在页级执行,也就是说,SQL Server 读取或写入所有数据页。

    区是八个物理上连续的页的集合, 用来有效地管理页, 所有页都存储在区中。

    在 SQL Server 中, 页的大小为 8 KB, 这意味着 SQL Server 数据库中每 MB 有 128 页

    每页的开头是 96 字节的标头, 用于存储有关页的系统信息. 此信息包括页码, 页类型, 页的可用空间以及拥有该页的对象的分配单元 ID. 

    下表说明了 SQL Server 数据库的数据文件中所使用的页类型.

    常用的: Data, Index, Text/Image

    日志文件不包含页,而是包含一系列日志记录.

    在数据页上, 数据行紧接着标头按顺序放置.  页的末尾是行偏移表,对于页中的每一行,每个行偏移表都包含一个条目. 每个条目记录对应行的第一个字节与页首的距离. 行偏移表中的条目的顺序与页中行的顺序相反。

    数据页面页首即标头 - 96个字节,保存着页面的系统信息,如页的类型,页的可用空间量,拥有页的对象的对象ID以及该页面所属于哪个物理文件.
    数据区 - 对应于上图中所有数据行的总区域,存放真正的数据,是以Slot为单位.一个Slot就是对应于一条数据记录行,从0开始编号16进制反序保存,Slot0, Slot1....行偏移数组- 用于记录该数据页面中每个Slot在数据页面所处的相对位置,便于定位和检索每个Slot在数据页面中的位置,数组中每个记录占两个字节。

    大型行支持

    行不能跨页, 但是行的部分可以移出行所在的页, 因此行实际可能非常大. 页的单个行中的最大数据量和开销是 8,060 字节 (8 KB). 但是, 这不包括用 Text/Image 页类型存储的数据.  包含 varcharnvarcharvarbinary  sql_variant 列的表不受此限制的约束.  当表中的所有固定列和可变列的行的总大小超过限制的 8,060 字节时, SQL Server 将从最大长度的列开始动态将一个或多个可变长度列移动到 ROW_OVERFLOW_DATA 分配单元中的页.  每当插入或更新操作将行的总大小增大到超过限制的 8,060 字节时, 将会执行此操作.  将列移动到 ROW_OVERFLOW_DATA 分配单元中的页后, 将在 IN_ROW_DATA 分配单元中的原始页上维护 24 字节的指针.  如果后续操作减小了行的大小, SQL Server 会动态将列移回到原始数据页. 有关详细信息, 请参阅 行溢出数据超过 8 KB

    区是管理空间的基本单位, 一个区是八个物理上连续的页(即 64 KB), 这意味着 SQL Server 数据库中每 MB 有 16 个区. 

    为了使空间分配更有效, SQL Server 不会将所有区分配给包含少量数据的表. SQL Server 有两种类型的区:

    • 统一区, 由单个对象所有, 区中的所有 8 页只能由所属对象使用.

    • 混合区, 最多可由八个对象共享, 区中八页的每页可由不同的对象所有.

    通常从混合区向新表或索引分配页, 当表或索引增长到 8 页时, 将变成使用统一区进行后续分配. 如果对现有表创建索引, 并且该表包含的行足以在索引中生成 8 页, 则对该索引的所有分配都使用统一区进行. 

    备注:

    1. text in row 可以以后去了解

    2. 查看数据库页信息的工具  http://www.cnblogs.com/lyhabc/archive/2013/01/20/2869057.html

  • 相关阅读:
    [转载]AXIS学习笔记
    [转]MQ(JMS) 的姊妹篇,Web service实践浅谈原理和用途
    [转]Oracle EXTRACT()函数与to_char() 函数
    [转]Webservice,基于Axis的最佳实践
    IIS出现The specified module could not be found解决方法
    转: ORA12560: TNS:protocol adapter error(TNS:协议适配器错误)
    PLSQL_案例优化系列_分析体系结构如何左右SQL性能(案例2)
    WebADI_数据验证3_建立基于Table的LOV验证(案例)
    PLSQL_案例优化系列_体会索引让SQL举步维艰的一面(案例6)
    PLSQL_案例优化系列_体会函数及位图索引与SQL优化(案例7)
  • 原文地址:https://www.cnblogs.com/biwork/p/2914191.html
Copyright © 2020-2023  润新知