第3/24周 区_SQL Server中管理空间的基本单位
哇哦,SQL Server性能调优培训已经进入第3周了!同时你已经对SQL Server内核运行机制有了很好的认识。今天我会讲下SQL Server中的区管理,因为这是个很重要的话题,我们会在第23周探讨TempDb。在最高级别来讲,区就是一组8张8k大小的页。因此一个区始终是64k的块(连续页)。SQL Server内部施行2类区:
- 混合区
- 统一区
混合区和统一区
在混合区的8个页可以属于像表和索引的不同数据库对象。这也是说混合区可以指向不同的数据库对象。在另外一方面,在统一区里所有的8个页面是属于同个数据库对象。现在的问题是,为什么SQL Server做出这样的区别?这个基本上是个与历史有关的问题。我们来解释下。
在上一世纪存储是非常,非常贵的。那是的目标就是尽可能有效的使用存储。因为新表和索引的第1个8页总是分配在混合区。这也意味着你的表或索引刚开始创建时总在8k的块(混合区)里。这样的话小表保持很小的存储占用。你正在尽可能有效的使用存储。当你的数据库对象需要分配第9个页时,SQL Server会分配整个统一区给那个数据库对象。它的大小从8kb 变成了72kb,到第17个页它的增长从72kb 变成了136kb,然后按此规律继续增长。现在你会对那个事实表示摇头,但在上个世纪,这曾是非常重要的设计选择。下面的图片会展示了一个区看起来是什么样(在一个非常简化的方式下)。

区管理
现在的问题是SQL Server如何管理这些区?想象下你有一个1TB大小的数据库,这会给你巨大数量的区。SQL Server这里使用2个特殊的页来管理,同样它们也是8kb 的大小。
- 全局分配映射表(GAM: Global Allocation Map Pages)
- 共享全局分配映射表(SGAM: Shared Global Allocation Map Pages)
统一区始终由GAM页管理。SQL Server使用8000 bytes 的GAM页,它给你64000位。(8000 * 8)。在那个巨大的掩码位图里,每个位代表一个统一区。如果那个位标记为1,表示那个统一区是空的,如果标记为0,表示那个统一区已被使用。这也意味着你4G区间的数据里只能有一个GAM页来管理(64000 * 64 / 1024 /1024)。因此每隔4G的数据文件都会有一个GAM页。这些对SGAM页也是对的。一个SGAM页也只能管理4GB的数据,因为你只有64000位可用。
当你在表里插入一条新记录,SQL Server会通过SGAM页找至少有一页空闲的混合区来插入数据。如果你的表/索引大于64kb,SQL Server会通过GAM页直接找空闲的统一区来插入数据。很简单,是不是?
在第23周,当我们探讨TempDb时,在我们同时在TempDb里尝试创建巨大数量的临时数据时,这个会引起严重的性能问题。到时我们会提到通过修改TempDb数据的一些设置来克服这个问题。
小结
在这周的性能调优培训里我们探讨了SQL Server中的区和区管理。到现在应该已经有很好并结实的SQL Server内部构造理解。
如果你想学习更多的区管理知识,我推荐下列文章:
- SQL Server :理解GAM和SGAM页
- SQL Server :理解IAM Pages
- SQL Server :理解Page Free Space (PFS) 页
- SQL Server :理解DCM页
- SQL Server :理解BCM页
- SQL Server :理解数据文件结构
在接下来的培训中,这些知识会作为性能调优和故障排除的先决条件。希望今天的培训你有所享受,下星期我回来的时候,我们会学习数据页的一些限制,还有我们如何和它们作战。请继续关注!
围观PPT:
0504_03区_SQL_Server中管理空间的基本单位.rar
第3/24周 区_SQL Server中管理空间的基本单位的更多相关文章
- 第3周 区_SQL Server中管理空间的基本单位
原文:第3周 区_SQL Server中管理空间的基本单位 哇哦,SQL Server性能调优培训已经进入第3周了!同时你已经对SQL Server内核运行机制有了很好的认识.今天我会讲下SQL Se ...
- 第2/24周 页_SQL Server 中数据存储的基本单位
上周通过探讨SQL Server如何执行一个查询奠定了基础.我也在那里提到页是8kb的缓存.今天我们对页进行进一步集中探讨,从性能调优角度挖掘出更多的细节. 页是SQL Server的基础,在SQL ...
- 第2周 页_SQL Server 中数据存储的基本单位
原文:第2周 页_SQL Server 中数据存储的基本单位 上周通过探讨SQL Server如何执行一个查询奠定了基础.我也在那里提到页是8kb的缓存.今天我们对页进行进一步集中探讨,从性能调优角度 ...
- 第十七周翻译-SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志
SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志 作者:Tony Davis,2012/01/27 翻译:赖慧芳 译文: 该系列 本文是Stairway系列的一部分:SQL ...
- 第0/24周 SQL Server 性能调优培训引言
大家好,这是我在博客园写的第一篇博文,之所以要开这个博客,是我对MS SQL技术学习的一个兴趣记录. 作为计算机专业毕业的人,自己对技术的掌握总是觉得很肤浅,博而不专,到现在我才发现自己的兴趣所在,于 ...
- 页和区 sql server
原文地址:http://msdn.microsoft.com/zh-cn/library/ms190969.aspx SQL Server 中数据存储的基本单位是页.为数据库中的数据文件(.mdf 或 ...
- 第1/24周 SQL Server 如何执行一个查询
大家好,欢迎来到第1周的SQL Server性能调优培训.在我们进入SQL Server性能调优里枯燥难懂的细节内容之前,我想通过讲解SQL Server如何执行一个查询来建立基础.这个部分非常重要, ...
- SQL Server中的TempDB管理——TempDB基本知识(为什么需要版本存储区)
原文:SQL Server中的TempDB管理--TempDB基本知识(为什么需要版本存储区) 参考资料来自: http://blogs.msdn.com/b/sqlserverstorageengi ...
- SQL Server中TempDB管理(版本存储区的一个example)
原文:SQL Server中TempDB管理(版本存储区的一个example) 原文来自: http://blogs.msdn.com/b/sqlserverstorageengine/archive ...
随机推荐
- Windows 下使用git 将代码托管到开源中国-(http://git.oschina.net/)
一.准备工作 当然是准备在windows 下使用需要的环境,和工具. msysgit 下载地址:http://msysgit.github.io/ TortoiseGit 下载地址:https:// ...
- WPF,Silverlight与XAML读书笔记第四十六 - 外观效果之三皮肤与主题
说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 皮肤 皮肤是应用程序中样式与模板的集合,可以 ...
- 【T-SQL基础】03.子查询
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 ...
- java提高篇(二九)-----Vector
在java提高篇(二一)-–ArrayList.java提高篇(二二)-LinkedList,详细讲解了ArrayList.linkedList的原理和实现过程,对于List接口这里还介绍一个它的实现 ...
- 在ThoughtWorks工作这几年我学到了什么?
不知不觉,从2012年5月1日加入ThoughtWorks到现在,已经3年有余了.时间过得很快,这三年多我干了很多事情,但仔细想想也没有什么特别值得一提的.在一个公司呆久了总觉得很多事情是理所当然的, ...
- 写js写傻了,明天研究一下异步
在html某元素上绑定一个click事件,该事件是一个执行事件很长的函数,比如执行几十亿或几百亿次加法,那么在这个函数执行的过程中,其他元素绑定的事件,是如何触发的呢,异步触发还是同步,触发时是怎么执 ...
- svn import-纳入版本控制
转svn import-纳入版本控制 import: 将未纳入版本控制的文件或目录树提交到版本库.用法: import [PATH] URL 递归地提交 PATH 的副本至 URL. 如果省略 PA ...
- Fedora Static Configure
Background Currenlty! I am work on fedora system, but the static-ip has required, but the fedora hav ...
- Atitit (Sketch Filter)素描滤镜的实现 图像处理 attilax总结
Atitit (Sketch Filter)素描滤镜的实现 图像处理 attilax总结 1.1. 素描滤镜的实现方法比较简单,这里我们直接写出算法过程如下:1 1.2. 颜色减淡COLOR_DO ...
- Atitit 表达式原理 语法分析 原理与实践 解析java的dsl 递归下降是现阶段主流的语法分析方法
Atitit 表达式原理 语法分析 原理与实践 解析java的dsl 递归下降是现阶段主流的语法分析方法 于是我们可以把上面的语法改写成如下形式:1 合并前缀1 语法分析有自上而下和自下而上两种分析 ...