ITPub博客

首页 > 数据库 > > SQLServer是如何存储数据的呢?

SQLServer是如何存储数据的呢?

作者:TTT1234 时间:2023-02-17 15:59:34 0 删除 编辑

 SQL Server用8KB 的页来存储数据,SQL Server 读取或写入都是以页为单位。

     如果想提高查询性能,可以减少SQL Server指定查询所需页的读取。

     就像吃披萨一样,如果想一口吃到更多的馅,就让馅都集中在一块饼上。同样,如果你想一次取到更多的数据,就让一页上集中更多的数据。


      那么数据是如何在页里面存放的呢?

      一个数据页总是由三个部分组成:

      1.页头(Page Header)

      2.数据区(Payload)

      3.行偏移数组(Row Offset Array)

      如图:

      


页头:始终是96 byte(不受页的类型约束),这里存储着像Page ID,Object ID等页的大体信息。这个长度是固定的。

 数据区:数据以槽的方式存储。数据记录的最大长度是 8060 bytes(包括 7 bytes的系统行开销),因此一条记录中你拥有的最大字节数是 8053bytes

例如:(下图中创建了maxsize表,一行的记录的长度就是8000+54=8054个字节,创建时就报错,因为还有7bytes的系统行开销,所以总长度就是8061,超过了最大长度8060)

  行偏移数组:行偏移数组的大小其实并不固定,如果数据区每条记录长度小,页里就可以存储更多的记录,行偏移表也会自下而上占用更多的空间。

 

   那如果我们要了解一个表具体被分配到哪些页里?


   使用非文档的命令DBCC IND


   如果想了解表如何在页里进行分布的?

  

   读取数据页结构的命令DBCC Page。


本文来源https://www.modb.pro/db/61019

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69953058/viewspace-3167510/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-11-13

  • 博文量
    566
  • 访问量
    5199