用了SQL这么些年,是否真的了解数据库是怎么存储和查找的呢??

原创 2012年03月23日 11:04:03

数据库:   ( 页)为单位----->从磁盘----》内存

页:1.数据页    2.索引页

数据页----(8KB): 页首(96B),数据行.......,行偏移数组



扩展盘区是一种基本单元,可将其中的空间分配给表和索引。一个扩展盘区是 8 个邻接的页(或 64 KB)。这意味着 SQL Server 2000 数据库每兆字节有 16 个扩展盘区。

为了使空间分配更有效,SQL Server 2000 对只含少量数据的表不分配完整的扩展盘区。SQL Server 2000 有两种类型的扩展盘区:

  • 统一扩展盘区由单个对象所有,扩展盘区中的所有八页只能由拥有该盘区的对象使用。

  • 混合扩展盘区最多可由 8 个对象共享。

通常从混合扩展盘区中向新表或新索引分配页。当表或索引增长到 8 页时,就变成统一扩展盘区。如果在现有表上创建索引,并且该表包含的行足以在索引中生成 8 页,则对该索引的所有分配都在统一扩展盘区内进行。


聚集索引

聚集索引在 sysindexes 内有一行,其 indid = 1。数据链内的页和其内的行按聚集索引键值排序。所有插入都在所插入行中的键值与排序顺序相匹配时执行。

Microsoft® SQL Server™ 2000 将索引组织为 B 树。索引内的每一页包含一个页首,页首后面跟着索引行。每个索引行都包含一个键值以及一个指向较低级页或数据行的指针。索引的每个页称为索引节点。B 树的顶端节点称为根节点。索引的底层节点称为叶节点。每级索引中的页链接在双向链接列表中。在聚集索引内数据页组成叶节点。根和叶之间的任何索引级统称为中间级。

对于聚集索引,sysindexes.root 指向它的顶端。SQL Server 沿着聚集索引浏览以找到聚集索引键对应的行。为找到键的范围,SQL Server 浏览索引以找到这个范围的起始键值,然后用向前或向后指针扫描数据页。为找到数据页链的首页,SQL Server 从索引的根节点开始沿最左边的指针进行扫描。

下图说明聚集索引的结构





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

本页的SQL例句全部懂了,你的数据库开发所需知识就够用了

--====================简单增删改=========== --查看学生表的全部数据 select * from studio    --插入一个新的学生信息 insert ...

你真的了解位运算?用了这个运算符,算法的时间复杂度竟然降了一个数量级!

其实这个运算符很容易被人忽略,他就是C语言中的位异或运算符^ 位运算符家族中,最常用的,莫过于异或运算符。 我们先看异或运算符的定义: 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1...

Sql中判断"数据库"、"表"、"临时表"、"存储过程"和列"是否存在

--判断数据库是否存在 IF EXISTS (SELECT * FROM MASTER..sysdatabases WHERE NAME = '库名') PRINT 'exists ' e...

美国人教你这样用Google,你真的会变特工!!!(看了才感叹原来这么多年的GOOGLE是白用了~这就是百度永远无法超越G的原因吧~)

大前提:英文Google→www.google.com 第一篇 在搜索框上输入:“indexof/”inurl:lib 再按搜索你将进入许多图书馆,并且一定能下载自己喜欢的书籍。 ...

【iOS沉思录】NSTimer你真的会用了吗

原文:http://www.cnblogs.com/smileEvday/archive/2012/12/21/NSTimer.html        看到这个标题,你可能会想NSTimer不就是计时...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)