存储引擎揭秘:基本结构之三——区

来源:互联网 发布:时间管理app 知乎 编辑:程序博客网 时间:2024/05/17 01:02

存储引擎揭秘:基本结构之三——区

 

原文地址:http://sqlskills.com/BLOGS/PAUL/post/Inside-the-Storage-Engine-Anatomy-of-an-extent.aspx

 

正文:

前面的文章我介绍了数据文件中的页,包括页结构和一些页类型。现在我想解释一下页是如何组织成区(extent)的。一个区是由数据文件中8个连续的页组成。区从数据文件头部开始,并且总是64K对齐(即:8页对齐)。区及其属性在SQL SERVER 20002005中是一模一样的。

SQL SERVER中有两种类型的区:混合区和统一区。

 

混合区

分配给任意一条IAM链(SQL SERVER 2000中的一个索引或者是2005中的分配单元)的前8个页的分配单位是单个页,这种页被称为混合页。就是说每次分配的是一个单独的页而不是一个区。这样便允许非常小的表花费最小数量的空间。一旦一条IAM链跨过了前8页的门槛,以后便分配统一区,再也不会分配混合页了。

 

从混合区中分配来的混合页,不需要分配给特定的IAM链。因为这些区会被全局分配跟踪(通过GAM页),所以不会分配给一个IAM链的。混合区中若还有没分配的页,该区同时会被SGAM页跟踪。当需要分配一个混合页,系统就会检查SGAM页是否还有这样的区。如果没有的话,就会分配一个新的混合区,并从中分配一页,然后这个区就被SGAM页跟踪直到所有的页被分配。

 

因为混合区不会被分配给一个特定的IAM链,这就是说它可能分配给8个不同的IAM链。不管有多少页被分配给IAM链,IAM页本身总是混合页。这就是说一个混合区可有多种页类型,包括IAM页、数据页、索引页或文本页。

 

统一区

一旦跨过了8页的门槛,以后就从统一区上分配给IAM链了。这就是说一次分配一个区给一条IAM链,并在IAM链上的IAM页上标明——不管是谁映射该区所在的GAM区间的。该区同时会被相关的的GAM页跟踪是否已分配,这样其它的IAM链就不会再分配它了。

 

一个统一区的所有页必须分给同一条IAM链。然后,它们不需要是同一类型的页。比如,一个聚集索引会同时有数据和索引页。当一个区被分配给IAM链时,该区中的页并不是一次全被分配掉的(除非是大型数据操作),这些页通常是按需分配,每页的分配情况有PFS页跟踪。

 

当一个统一区的所有页都被释放,那么区本身就从拥有它的IAM链中释放了,并且可以再次分配给其他的IAM链,或者成为混合区。

 

为备份跟踪变化的区

系统中有两个地方用来跟踪变化的区:

1.      自上次完整备份以来所有改变的区会有相关的差异位图页(differential bitmap page)跟踪。这样差异备份时便可以知道哪些区需要备份而不是备份整个数据库了。当下次完整备份时所有的差异位图页都被复位。

2.      自上次完整、差异或日志备份以来一个区在BULK-LOGGED恢复模式下发生了大日志操作,会有相关的最小日志位图页(minimally-logged bitmap page)跟踪。大日志操作后的任何日志备份就会包含所有这些跟踪的区。当下次备份时,所有的最小日志位图页都会被复位。

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 男扮石油大亨囚禁10女模生7子 男儿本色qvod 男孩被体罚后截瘫 男科医院65856606 男模时代广场裸奔 男拧有噶坏 男女发现山洞闪金光 进一看兴奋极了 男女发现山洞闪金光进一看兴奋极了 男女警长假扮夫妻 男女蒲典wet123 男女疑因车震冲入河中 男女这里长一寸竟可增寿十年 男人婚前没有这经验抬不起头来 男生猛扇回击老师 男生喜欢女仆装小说 男士去眼袋费用 男童遭飞镖扎左眼 男员工被开除党籍 男子草丛发现异物 捅破后被吓坏了 男子车震被家人堵车内 男子发现山洞闪金光 进一看兴奋极了 男子韩币骗晕劫匪 男子患病体内钢钉 男子靠手机挡子弹 男子拦婚车要钱被打 男子拿祖传宝刀做抵押 知道结果后十分后悔 男子掐脖劫持婴儿 男子杀变性人伴侣 男子深夜按摩猝死 男子生日被闪电击 男子涂鸡血自导绑架案 男子玩浪漫高楼垂降 男子维修管道 竟发现骇人一幕 男子维修管道 这一幕让人头皮发麻 男子寻宝捡旧手提箱 里面东西惊动全城 男子烟瘾发作抢劫 男子岩穴住25年 男子意外获藏宝图 挖出大宝贝 男子雨中殴打怀孕妻子 男子遭雷劈获超能力 男子遭雷劈拥有超能力