什么是SQL Server中的页面,我需要担心吗?

时间:2011-01-11 12:34:17

标签: sql-server

我在SQL Server 2008中遇到过页面,并对此感到有些困惑。我正在阅读MCTS Self-Paced Training Kit (Exam 70-433): Microsoft SQL Server 2008-Database Development,其中作者讨论了这个概念,但是以有限的方式。

来自MSDN“Understanding Pages and Extents”我得到的回答并没有真正帮助。该网页描述了页面的大小(8kb)以及页面中行的存储方式,以及如果行不适合页面,将如何自动移动列(由SQL Server)。

但是,我仍然想知道页面级别是否应该注意设计具有ER图表,表格和数据类型的数据库?或者,我应该依靠SQL Server自动处理页面并尽可能以最佳方式处理页面吗?

alt text

Thanx倾听!

2 个答案:

答案 0 :(得分:39)

是!页面是SQL Server中最基本的存储元素。

在页面上的8192个字节中,约。作为用户,您可以使用8060。如果您能够很好地将数据行放到页面上,那么它们将占用更少的存储空间。

如果您的数据行例如是4100字节长,只有一行将存储在页面上(页面的其余部分 - 3960字节 - 是浪费的空间)。重要的一点是:这些页面不仅与磁盘相关,而且与SQL Server主内存相关 - >您希望尽量避免在页面上无法容纳任何有用信息的大面积空间。

如果您可以设法减少占用4000字节的行,那么突然您可以在页面上存储两行,从而显着减少浪费空间的开销(每页最多60个字节)。

答案 1 :(得分:14)

在遇到性能问题之前,您无需担心8 KB的页面结构。但是如果你想知道8 KB页面的内部,这里有一个youtube http://www.youtube.com/watch?v=He8MRttysmY的视频,演示了8 KB页面的外观。

enter image description here

1.Page header存储有关页面的信息,如页面类型,下一页和上一页(如果它是索引页面,页面中的可用空间等)。

2.页面标题数据行部分后面。这是您实际存储数据的位置。

3.Row偏移信息存储在页面的末尾,即数据行部分之后。每个数据行都有一个行偏移量,行偏移量的大小是每行2个字节。行偏移存储有关行距页面开头的距离的信息。

用简单的单词表示完整的页面公式如下所示。

  

页面(8 KB / 8192字节)=页眉(96字节)+实际数据   (无论什么字节)+行偏移(每行2个字节)。