表和索引的结构


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,SQL SERVER 存储数据的最小单位是页,大小为8KB,它可以包含表或索引数据、分配视图、可用空间信息等。
1)它是SQL SERVER可以读写的最小I/O单位,所以即使访问一行,SQL SERVER也要把整个页加载到缓存,再从缓存中读取数据。
2)页的大小是8KB,即8192字节,故行的大小不会超过8192字节,最大值是8060字节,因为8192-96(标头信息)- 2(页尾维护的行指针)- 34(保留字节) = 8060
3)在2005之前的版本中行不能跨多页,而2005之后是可以的,当行大小超过8060字节后,这些类型的值将被移动到一个称为行溢出分配单元的页中,而在原始页上保留一个24字节的指针,指向行外的数据。

2,8个物理上连续的页组成的单元称为区。

3,表没有索引时组织为堆,有时组织为B树,堆是无序的,给定一个值,在对于节点处不知是在此节点的左子节点还是右子节点,而B树是有序的,给定一个值是可以知道是向左走还是右走。
概念:堆是一种特殊的二叉树,每个接点的关键值都大(或小于)它的左右孩子接点,一般指最大堆或最小堆
具备以下两种性质
1)每个节点的值都大于(或者都小于,称为最小堆)其子节点的值
2)除最后一层外每一层都是填满的,并且最后一层的树叶都在最左边

B树 :二叉树,每个结点只存储一个关键字,等于则命中,小于走左结点,大于走右结点;
二者区别:在于子结点上,B树是子结点比父结点小,右结点比父结点大,而堆没有这种性质。