第3周 区_SQL Server中管理空间的基本单位

简介: 原文:第3周 区_SQL Server中管理空间的基本单位哇哦,SQL Server性能调优培训已经进入第3周了!同时你已经对SQL Server内核运行机制有了很好的认识。今天我会讲下SQL Server中的区管理,因为这是个很重要的话题,我们会在第23周探讨TempDb。
原文: 第3周 区_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 Quickies:

  • SQL Server Quickie #2:Extents
  • SQL Server Quickie #3:Allocation Units
  • SQL Server Quickie #4 : IAM Pages

在接下来的培训中,这些知识会作为性能调优和故障排除的先决条件。希望今天的培训你有所享受,下星期我回来的时候,我们会学习数据页的一些限制,还有我们如何和它们作战。请继续关注!

目录
相关文章
|
SQL 数据库 开发者
MSSQL性能调优实战:索引策略、SQL优化与并发管理深度剖析
在Microsoft SQL Server(MSSQL)的性能调优过程中,索引策略、SQL查询优化以及并发管理是关键的三大支柱
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
620 13
|
SQL 存储 关系型数据库
mysql 数据库空间统计sql
mysql 数据库空间统计sql
243 0
|
SQL 关系型数据库 数据库
数据库空间之谜:彻底解决RDS for SQL Server的空间难题
【8月更文挑战第16天】在管理阿里云RDS for SQL Server时,合理排查与解决空间问题是确保数据库性能稳定的关键。常见问题包括数据文件增长、日志文件膨胀及索引碎片累积。利用SQL Server的动态管理视图(DMV)可有效监测文件使用情况、日志空间及索引碎片化程度。例如,使用`sp_spaceused`检查文件使用量,`sys.dm_db_log_space_usage`监控日志空间,`sys.dm_db_index_physical_stats`识别索引碎片。同时,合理的备份策略和文件组设置也有助于优化空间使用,确保数据库高效运行。
386 2
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
453 9
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
306 6
|
SQL 数据采集 数据管理
SQL数据:探索、管理与优化的全面解析
在信息化时代,数据成为企业核心资产。本文探讨SQL在数据探索、管理与优化中的作用:使用DESC、SELECT了解数据集;评估数据质量;发现数据特征。管理方面,涵盖数据存储、检索、更新与维护。优化则涉及索引、查询及数据库设计,确保高性能和效率。掌握SQL能有效挖掘数据价值,支持企业决策与创新。
230 1
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
1305 3
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
1306 1