范围和分配单位之间的差异/关系是什么?

pen*_*ake 1 sql sql-server heap indexing sql-server-2008

你能解释SQL中'Extent'和'Allocation Unit'之间的区别 - 或关系吗?

Rem*_*anu 5

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

范围是从可被8整除的页面ID开始的任何8个连续页面.SQL Server IO以范围感知方式执行:理想情况下,立即读入整个范围,整个范围一次写出.这取决于缓冲池的当前状态,有关详细信息,请参阅如何工作:Bob Dorr的SQL Server I/O演示.范围通常一起分配,因此范围的所有页面都属于同一分配单元.但由于这会导致小表的过度分配,因此特殊类型的范围是所谓的"混合"范围,其中每个页面可以属于单独的分配单元.有关详细信息,请参阅内部存储引擎:GAM,SGAM,PFS和其他分配映射.

所以你看到的概念是相关的,但却截然不同.也许您应该解释一下您试图解决的问题是什么,或者您为什么对这些概念感兴趣,或许我们可以详细说明.