sql - 范围和分配单元之间有什么区别/关系?

标签 sql sql-server sql-server-2008 indexing

您能解释一下 SQL 中“范围”和“分配单元”之间的区别或关系吗?

最佳答案

分配单元基本上只是一组页面。它可以很小(一页)或很大(很多页)。它在 sys.allocation_units 中有一个元数据条目.它由 IAM chain 跟踪.分配单元最常见的用途是行集的 3 个众所周知的 AU:IN_ROW_DATA、ROW_OVERFLOW 和 LOB_DATA。

范围是从可被 8 整除的页面 ID 开始的任意 8 个连续页面。SQL Server IO 以范围感知方式执行:理想情况下一次读入整个范围,一次写出整个范围。这取决于缓冲池的当前状态,有关详细信息,请参阅 How It Works: Bob Dorr's SQL Server I/O Presentation . Extent 通常一起分配,因此一个Extent 的所有页面都属于同一个分配单元。但是由于这会导致小表的过度分配,所以一种特殊类型的范围是所谓的“混合”范围,其中每个页面都可以属于一个单独的分配单元。详情见Inside The Storage Engine: GAM, SGAM, PFS and other allocation maps .

如您所见,这些概念是相关的,但又非常不同。也许您应该解释一下您要解决的问题是什么,或者您为什么对这些概念感兴趣,也许我们可以再详细说明。

关于sql - 范围和分配单元之间有什么区别/关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9982261/

相关文章:

mysql - where 子句中的未知列

mysql - 基于第一个表合并多个表的数据

c# - 消息6522,在执行clr存储过程期间发出16级警告

基于日期的 SQL Case 语句

sql - 为什么 SQL Server 2008 Management Studio 没有选项 "Open table"

SQL 多个 SELECT 运行速度非常慢

mysql - 如何以正确的语法编写此查询?

MySQL RGB 比较错误 - 命令不同步

SQL Server默认日期时间戳?

sql-server-2008 - 如何提高在 2005 上运行良好的 SSIS 2008 包的更新性能?