对于SQL Server的内部结构有几个问题。
假设我们在数据库中有一个表。
SGAM和GAM页面在单个GAM间隔(〜4GB)内跟踪共享和统一的扩展区,并帮助我们在分配页面/扩展区时找到合适的扩展区类型(最初从混合扩展区中分配前8页,而这些页面的位置是记录到IAM页,然后再从GAM扩展区(统一扩展区)记录此信息,并将此信息存储在下一个链接的IAM页中。
假设已分配了该表的页面,并且表的大小超过了8页,并且稍后,行被删除,留下了一些可重用的空间。SQL Server如何知道扩展区具有可用空间?
页面具有有关可用空间大小的信息,但是检查每个页面都非常耗时。SGAM和GAM页面中的一些内容不会告诉我们分配了扩展的内容或有一些空闲页面(整个页面都是免费的,而不是部分的)。
文件标题,SGAM,GAM和IAM页面位于文件的第一页中。实际上是什么数据结构指向它们?